Ajaxで今よみがえる(^^;;-->[クロスブラウザ技術 ]DHTMLサンプル集
古籏一浩さんとのはじめての共著 発売中-->『Ajax実践テクニック』 古籏一浩/高橋 登史朗 (著)秀和システム
配本予約開始-->『入門Ajax 増補改訂版 』 高橋 登史朗 (著)ソフトバンククリエイティブ ; ISBN: 4797336242
-- リスト --
【カテゴリー】 ActionScript ( 4 ) AjaSQL ( 9 ) Ajax ( 541 ) Arax ( 1 ) canvas ( 9 ) CSS ( 8 ) DLNA ( 1 ) Dojo ( 16 ) DOM ( 44 ) ES4 ( 3 ) 反重力物質 ( 1 ) ffAdd-on ( 1 ) Flash ( 45 ) Flash Remoting ( 11 ) FTP ( 2 ) GAF ( 9 ) Google Maps ( 106 ) GPS ( 38 ) HTTPヘッダサンプル ( 9 ) IPv6 ( 1 ) 漫画 ( 1 ) Java ( 44 ) JavaScript ( 232 ) jKamo ( 8 ) jQuery ( 66 ) jquery-ref ( 1 ) jsGadget ( 19 ) jslb_ ( 3 ) jslb_ajax ( 9 ) JSON ( 44 ) JSR223 ( 7 ) kjscmd ( 1 ) KNOPPIX ( 1 ) Linux ( 14 ) Mac ( 8 ) Memo ( 3 ) Microformats ( 2 ) Mini AJAX ( 2 ) MochiKit ( 2 ) mootools ( 2 ) Movable Type ( 57 ) MySQL ( 9 ) NewGameWeb ( 2 ) Nucleus ( 8 ) OpenAJAX ( 3 ) OpenDocument ( 1 ) OS ( 5 ) P2P ( 2 ) Perl ( 7 ) PHP ( 37 ) PostGIS ( 1 ) PostgreSQL ( 3 ) prototype.js ( 21 ) ROBOT ( 1 ) RSSリーダー ( 14 ) Ruby on Rails ( 7 ) Spry ( 6 ) SQLite ( 10 ) SQLiteWorker ( 2 ) ssh ( 1 ) SSI ( 2 ) SVG ( 15 ) TRON ( 1 ) Video ( 1 ) VML ( 1 ) Webサービス ( 89 ) widget ( 6 ) Wiki ( 1 ) Win ( 6 ) WSH ( 1 ) X01HT ( 29 ) XML ( 28 ) XOOPS ( 1 ) XQuery ( 2 ) XUL ( 3 ) Yahoo! UI ( 58 ) 日付入力用カレンダー ( 1 ) 『Ajax実践テクニック』 ( 1 ) 『入門 Ajax』 ( 42 ) WinTips ( 2 ) こりゃすごい ( 1 ) チューニング ( 20 ) ダイナミックロード関数 ( 7 ) リファレンス ( 13 ) ライブラリ ( 83 ) レーダー雨量表示 ( 1 ) ハード ( 15 ) ペンギン ( 2 ) ブラウザ ( 56 ) ブログでBBS ( 1 ) アクセスグラフ ( 3 ) カレンダーによる日付入力スクリプト ( 4 ) クロスブラウザ ( 10 ) クロスブラウザ関数 ( 7 ) スマートフォン ( 8 ) セキュリティ ( 87 ) ソフトイーサ ( 1 ) マッシュアップ ( 22 ) 暗号 ( 4 ) 映画 ( 41 ) 河川の水位グラフ ( 3 ) 回線 ( 2 ) 開発ツール ( 16 ) 牛久大仏 ( 8 ) 携帯 ( 112 ) 言語 ( 17 ) 故障 ( 1 ) 洪水警報システム ( 2 ) 今日のひと言 ( 2 ) 仕様 ( 39 ) 雑談 ( 199 ) 書籍 ( 17 ) 親子ウインドウ有無の確認関数 ( 3 ) 新海誠 ( 3 )

【info】有料サポート(ベータ)限定 承り中 /【JSサポート(仮称)】 

【費用】 とりあえず、言い値で承ります。ただし、できる範囲での限定受付です。込み具合等によりお受けできない場合がありますのであらかじめご了承ください。サポートにご納得いただけなければ料金は不要です。 逆に感動したら多くても構いません(^^;;;。

【できること】 たとえば、かも日記で無料配布されているコードのカスタマイズや、あるいは、JavaScript/Ajax全般+Webサーバーとの連携などのアドバイス&サンプル作成等 。A:jQchartなどでWeb用グラフ設置(エクセル→CSVやデータベースからWebグラフ生成)などのアドバイスやカスタマイズサンプル作成。B:ツリーメニューなどのカスタマイズサンプル。C:Google Mapsのカスタマイズ。etc...

【できないこと】 腕立て伏せ200回

【ライセンス】 私が今まで「かも日記」等で提供してきたコードの大半は、商用利用、改造、自由、連絡不要で、今後もそれらは変わりません。そして、この有料サポートによりカスタマイズコードなどが提供される場合でも、同様に、それらを商用利用しても改造しても自由です。ただし、制限のきついライブラリなどを使う場合は、各ライブラリのライセンスに準拠せざるを得ない場合があります。

【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いですが、何卒、ご了承ください ( _ _ b

2005年07月08日

【jsGadet】ドラッガブルフロートなDIV

Ajax , jsGadget ブックマークに追加する ブックマーク-- Buzzurl  / Hatena  / Livedoor track feed


http://jsgt.org/lib/dragfloat/jsgt_dragfloat04.htm
Ajaxの出力がalertやinnerHTMLだけではつまらないので AjaSQLのテストでは http://jsgt.org/ajax/ref/test/json/sql/test132.htm こんな、ドラッガブルフロートなDIVを利用しています。でも、、、

これは、つまり、 「ドラッグできて、スクロール時には画面の固定位置で停止するDIV」 ってことですが、このAjaSQLのテストでは、 クロスブラウザ関数を組み合わせて使っています。

でも、この方法では、クロスブラウザ関数を作った、自分で言うのもなんですが(^^;; 結構めんどうなので、Ajaxブラウザを対象にして、専用関数を0から作り直しました。 http://jsgt.org/lib/dragfloat/

一応、「jsGadget」として分類してみるです。

#それにしても、DOCTYPEによってJavaScriptの動作が変わるってのは、やはり、勘弁して欲しかったですね。このせいで、 「(BODY検出のため)dragfloatライブラリの前にBODYタグ が必要」という、妙なことになってます、、、。半日悩んで、ふと、思い出し、書き直しました。こういうのに出会うと、やはり、Ajax的エンジン作るのは、知識が無いと不可能かも。。。ま、できるとこまでがんばろう。

【動作ブラウザ】
Ajaxなブラウザを対象としています
win mac linux
n7m1e6o7o8 n7m1e5s1 n7m1k3
× ×

【CREATE 】2005.7.7 

// UPDATE : 2005.11.20 v08 セレクトができなくなるのでdocument.onmousemoveのreturn falseをコメントアウト
// UPDATE : 2005.9.26 v07 floatEnabled boundEnabled setBounds chkBounds追加
// UPDATE : 2005.9.22 v06 getTOP getLEFT getMouseX getMouseYをdivのプロパティ化
// UPDATE : 2005.8.12 v05ドラッグ時にieで発生するselectをonselectstartでキャンセル
// UPDATE : 2005.8.10 v04ドラッグ時にiframe上でイベントを拾えないのを多少修正しました
// UPDATE : 2005.8.8 dbg_echo()追加
// UPDATE : 2005.8.8 bodyタグが無い時用ダミーbody出力を追加 
// UPDATE : 2005.7.8 DOCTYPE 標準モードに対応
参考 http://otd8.jbbs.livedoor.jp/877597/bbs_tree?base=9322&range=1

【使用例】
http://jsgt.org/lib/dragfloat/jsgt_dragfloat04.htm
ドラッガブルフロート+透明化フェイド
http://jsgt.org/mt/archives/01/000421.html

【最新版】 ディレクトリ 
jsgt_dragfloat08.js  
【サンプル】


【サンプルコード】

<!-- ライブラリ  jsgt_dragfloat.js-->
<script type    = 'text/javascript'
        charset = 'UTF-8'
        src     = 'http://jsgt.org/lib/dragfloat/jsgt_dragfloat04.js'></script>
<script type='text/javascript'>
<!--

////
// 設定
//
// @syntax oj = dragableFloat("DIVのID名",初期位置X,初期位置Y)
//
// @sample              div1 = dragableFloat("aaa",100,200) //生成
// @sample              div1.innerHTML="あいうえお"         //HTMLを挿入
// @sample              div1.style.backgroundColor='orange' //CSSで修飾
// @sample              doDragableFloat()                   //開始
//		
function setDragableFloat(e)
{

	//ドラッガブルフロートDIVを生成
	var div1 = dragableFloat("dragableFloatTest",getMouseX(e)+10,getMouseY(e)+10)

	//HTMLを挿入
	div1.innerHTML="ドラッグもできる<br>フロートDIVです"

	//CSSで修飾
	div1.style.backgroundColor ="#ffcc00"
	div1.style.color           ="#000"
	div1.style.padding         ="4px"
	div1.style.fontSize        ="12px"


	//開始
	doDragableFloat()


	//--マウスX座標get 
	function getMouseX(e)
	{
		if(document.all)               //e4,e5,e6用
			return canvas.scrollLeft+event.clientX
		else if(document.getElementById)    //n6,n7,m1,o7,s1用
			return e.pageX
	}

	//--マウスY座標get 
	function getMouseY(e)
	{
		if(document.all)               //e4,e5,e6用
			return canvas.scrollTop+event.clientY
		else if(document.getElementById)    //n6,n7,m1,o7,s1用
		return e.pageY
	}
}

  //ページロード完了フラグ
  var pageloaded=false
  window.onload=function(){ pageloaded=true }

//-->
</script>

<!-- こんなふうにスタイルタグで指定もOK -->
<style>
<!--
#dragableFloatTest{
	background-color : #6666cc          ;
	width            : 100px            ;
	height           : 100px            ;
	filter           : Alpha(Opacity=60);
	-khtml-opacity   : 0.6              ;
	-moz-opacity     : 0.6              ;
	opacity          : 0.6              ;
}
-->
</style>

<input
       type    =  "button"
       onclick = "if(pageloaded){setDragableFloat(event)}else{alert('ページロード完了までまってね')}"
       value  = "出現" />


    taka ( 2005年11月03日 20:29 )

    Ajaxを勉強しててだどりつきました。
    これすごいですね!
    出現させたドラッガブルフロートを消すのって
    どうやればいいのですか?

    高橋登史朗 ( 2005年11月04日 15:40 )

    div1.innerHTML="";
    とか、
    div1.style.width="0px";
    div1.style.height="0px";
    とかすれば消えますから、
    どこかで、そういうメソッドを動作させれば良いことになります<ってメソッド作っていなかった(^^;;;

    taka ( 2005年11月04日 20:28 )

    さっそくありがとうございます!!
    いろいろ勉強します。

    daiki ( 2005年11月23日 02:10 )

    いつもこのサイトには参考にさせてもらっています。
    少し気になったことがあったので質問させていただきます。

    気づいたのですが、フロートDIVを出現させると
    元のページのテキストが反転選択できなく
    なってしまうのですが、これは自分の環境だけでしょうか?
    それとも仕様なのでしょうか?

    高橋登史朗 ( 2005年11月23日 11:10 )

    document.onmousemoveのreturn falseをコメントアウトするとセレクトできると思います。
    jsgt_dragfloat08.js
    で、コメントアウトをデフォルトにしました。

    daiki ( 2005年11月24日 01:58 )

    修正ありがとうございました。
    このスクリプトをつかわさせていただきます。

    taka ( 2005年12月10日 16:23 )

    質問させてください。
    ドラッガブルフロートを組み込んだHTMLファイルを
    直接ブラウザで表示させると(c:\xxx.html)InnerHTMLで設定した外部HTMLファイルが正常にfフロート内に表示されるのですが、
    IIS経由でアクセスした同じHTML(ttp://localhost/xxx.html)では外部HTMLがフロート内に表示されない(doDragableFloat()は正常動作)という現象が起こっています。
    なにか設定がたりないのでしょうかね?

    高橋 ( 2005年12月10日 20:18 )

    takaさん、すみません。その情報だけでは、そちらの様子を想像することができません、、、。フロート状態にならないということですか?それとも、DIVの外に表示されてしまう?ドラッグはできますか?エラーは出ていませんか?

    柳 ( 2005年12月13日 01:11 )

    いつも拝見させていただいております。
    表示されるDragableFloatの中にformを入れてみたところ、普通にドラッグするとinputの動きが回りのテキストと比べて遅くて変になります。
    また、optionで1回スクロールバーをクリックして選択を変えないでそのまま関係ないところをクリックするとドラッグした状態になるのか、マウスを動かすだけでドラッグされます。
    改善できないでしょうか?

    柳 ( 2005年12月13日 01:13 )

    上記訂正:動きが遅くなるのはinputではなく、optionだけでした。

    高橋 ( 2005年12月13日 12:17 )

    とりあえず、v091で修正しました。ただ、テスト中にOperaの変な動作が見つかったので更に修正予定です。いずれにしてもv09x代はまだテストバージョンですのでご了承ください。

    高橋 ( 2005年12月13日 12:18 )

    すみません、テストを行ったURL書くのを忘れました。
    http://jsgt.org/lib/dragfloat/test/0/option_v091_0.htm

    高橋 ( 2005年12月13日 12:31 )

    あと、動きが遅くなる件は、Win IE自体のSELECT実装の問題ではないかと思います。そうなると、こちらでは、対処できません。#SELECTコンポーネントもどきを自前でJavaScriptで作ってしまうという手はありますが、、、(^^;;

    taka ( 2005年12月14日 18:09 )

    Posted by: taka : 2005年12月10日 16:23
    のtakaです。遅くなってすいません。

    現象ですが、フロートは出現しますし、ドラッグも可能です。が、フロート内にHTMLの内容が表示されないという現象が出ています。
    エラーは特にでていません。

    ためしに御サイトの
    /lib/dragfloat/sample/2
    をダウンロードしてそのままIISのドキュメントルート内に
    設定しみたのですが、load hello.htmボタンをクリックしても、小さい正方形のピンクのフロートが表示されるだけで中身(Hello)が表示されません。

    そのままフォルダ内のsample.htmをダブルクリックして動作させると正常に動作しますが、
    ブラウザで ttp://localhost/sample.htm
    とやって実行すると上記のような現象になります。


    説明が下手ですいません。

    taka ( 2005年12月14日 18:54 )

    すいません。↑のtakaです。
    下記例でIISでHello.htmに対してのPOST時に
    405のエラーが発生していました。
    Hello.htmをasp.net(aspx)にして実行すると
    正常に動作しました。
    大変お騒がせしました。すいませんでした。

    柳 ( 2005年12月15日 02:42 )

    返事が遅れて申し訳ございません。
    修正ありがとうございます。

    高橋登史朗 ( 2005年12月15日 17:17 )

    柳さん、こんにちは。
    修正はしてみたものの、ドラッグスピードが上がった時にレイヤーが追随できないケースで、類推追跡が効かなくなってしまいますね、、、うーん、、、操作感に影響がでるので痛いですね、、、どうしよう、、、。

    yoshi ( 2006年01月06日 10:54 )

    はじめまして。
    ドラッグ可能なDIVを作成しようとしていたら、こちらにたどり着きました。さっそく、ドラッガブルフロートを利用させていただいております。
    質問なのですが、作成されたDIVを完全に削除することは可能なのでしょうか?削除後、再び同じIDでドラッガブルフロートを作成したいと考えております。

    高橋登史朗 ( 2006年01月07日 19:45 )

    このdivは、ただのdivですから削除すればなくなると思います。たとえば、
    http://jsgt.org/lib/dragfloat/jsgt_dragfloat04.htm
    このページで下記を打ち込んでみてください。
    javascript:alert(div1.parentNode.removeChild(div1))

    高橋登史朗 ( 2006年01月07日 20:02 )

    と、思ったのですが、、、登録したイベントを停止しないといけませんねf^^;;今のままのスクリプトですとSafariとKonquerorはclearInterval(aaa)し、それ以外は、window.onscroll=nullして全部一度停止してからすべてを再起動する必要がありますが、手抜きをしたSafariとKonquerorが、これではだめかもf^^;。aaaを、配列に変えてやれば大丈夫だと思います、、、うーん、div削除は、次回の実装課題だなぁ、、、。

    yoshi ( 2006年01月09日 22:46 )

    なるほど、イベントを停止すればよいのですね。自分でも試してみます。ありがとうございました。

    Tak ( 2006年09月19日 20:33 )

    ドラッガブルフロートのサイズをブラウザなどのように変更はできませんか?

    高橋 ( 2006年09月20日 00:43 )

    できますが、今はちょっと作業する予定がありません。

    参考までにDojoで、
    http://jsgt.org/js/books/rc/sample/contents.htmのFloatingPaneとかにはそんな感じの機能がありますよ。

    Tak ( 2006年09月22日 13:28 )

    ありがとうございます。
    参考にして、Dojoの導入も検討してみます。

    mdaiki ( 2006年11月01日 23:44 )

    突然失礼します。
    このjsgt_dragfloat08.js のスクリプトの
    著作権等について、// このソースは改変も商用利用も自由ですが、
    // その自由を護るために著作権は放棄しません。
    とあるのは読みましたが、どうしても
    念のため確認したいことがあります。
    それはここに書けばよろしいのでしょうか?
    それともメール等のほうがよろしいですか?
    お忙しいところ申し訳ありませんが、返答
    お願いいたします。

    一応、メールアドレスを載せておきます。


    【コメント】(←clickで入力欄open)