JUGEM ブログでAFPBB News より強制的に貼りこまれるニュースのテスト で使いました。 強制的に本文の先頭に追加されてしまうので、テーブルタグの中に DIV を作成してクラス名 を付けて、ダミーで基点を表す DIV を作り、その DIV にもクラス名を付けています。 要するに基点を全部取り出して、その親ノードから目的の場所を見つけて転送しています ブログでは同一ページのどこに同じ構成があるか解らないので、ロードイベント が一度しか実行されないように、jugem_afpbb() を何度も呼び出してもイベントが 登録されるのは一度だけです
<script type="text/javascript"> var jugem_afpbb_flg = 0; function jugem_afpbb_get(obj,class_target) { var target; for( var i = 0; i < obj.length; i++ ) { if ( obj[i].className == class_target ) { target = obj[i]; break; } } return target; } function jugem_afpbb_all() { var a = document.body; var b = a.getElementsByTagName("DIV"); var c,d,e,f; for( var i = 0; i < b.length; i++ ) { if ( b[i].className == 'afpbb' ) { c = b[i].parentNode; d = c.getElementsByTagName("DIV")[0]; e = jugem_afpbb_get(c.getElementsByTagName("DIV"),'afpbbtarget'); f = jugem_afpbb_get(c.getElementsByTagName("DIV"),'afpbbItemAds'); e.appendChild(d); e.appendChild(f); } } } function jugem_afpbb() { if ( jugem_afpbb_flg == 0 ) { if (window.attachEvent){ window.attachEvent('onload', jugem_afpbb_all); } else { window.addEventListener('load', jugem_afpbb_all, false); } jugem_afpbb_flg = 1; } } </script>
ダミーは、クラス名を afpbb としています。 常にこのクラス名という前提で、jugem_afpbb() を呼び出します。 ページ上の全てのこのセクションを基点にして同じ記事内の afpbbtarget というクラス名を持つ DIV を探してニュースコンテンツ を移動させます
<div class="afpbb"></div> <script type="text/javascript"> jugem_afpbb(); </script> <table calss=seesaa_tbl><tr> <td style='padding:30px;'> <div class=afpbbtarget style='width:300px;margin-left:0px;text-align:left'> <!-- main(left) --> </div> </td> <td style='vertical-align:top;text-align:left;padding:5px;'> <pre class=tbl_right> <!-- right --> 移動に成功しました。全てロード後なので、 ちょっと移動が遅れますが、いずれ PC の パワーで意味無くなるでしょうし。 </pre> </td> </tr></table> <pre class=tbl_under style='padding:30px;'> <!-- under --> </pre>
もうかなりの間、以下のコードで運用しています。相当複雑なページで 動いているので基本的にこのままで問題は出ないと思います。こごでは、 ブラウザの違いを特に言及する必要が無いので、とにかくこれを使うと、 ページが全てロードされてから処理が可能になります。 例えば、処理をページの最後に書けないようなシステムでは、どこに書 いても最後に実行されるので、表示レスポンスの問題を除いて多用され ている処理です
if (window.attachEvent){ window.attachEvent('onload', jugem_afpbb_all); } else { window.addEventListener('load', jugem_afpbb_all, false); }
※ addEventListener については、以下で詳しく説明されています element.addEventListener - MDC
タグ:javascript
|
【記録の最新記事】
- Java、PHP、jQuery : 最近の記事と関連する記事のまとめ / インデックス
- Google MAP API が 1日に 25,000 ビューを超えると表示される画面
- WEB フォントをクロスドメインで利用する
- ブログ更新通知先に関する情報
- さくらインターネットの CRON の設定で、標準エラー出力を postmaster に送らない
- VBScript 用 onClick 一行書き
- 『家に帰ると妻が必ず死んだふりをしています』というブログを発見しました
- Google Chrome 32.0.1700.76 のコンボボックススクロールバーがドラッグできないのは、Windows7 のエアロ系で起きるようです。
- Google Chrome 32.0.1700.76 のコンボボックススクロールバーがドラッグできない問題が、開発版(34.0.1794.5 canary) で修正されたそうです
- Google Chrome 32.0.1700.76 の具体的な問題点
- ファイル名リストをクリップボードへコピー
- キーボード説明用画像( フリーフォントでキーボード画像作成 )
- 何だこれ。Microsoft の 看板的ワードの誤字『EIblog をご覧ください。』って・・・
- 9月27日10時頃、Google Chrome でのみ AdSense の表示がおかしくなりましたが・・・
- 注意 : フィッシング詐欺メールのタイトル『【ドラゴンクエストX 目覚めし五つの種族 オンライン】認証』
- まぎらわしい『AdSenseの終了』を知らせる『日本語ページ』
- Trigger Rally(WebGL+Three.js) のコースを無視してひたすら悪路を走りまくる
- Windows 8.1 に期待は無いけれど、3D プリンタへの期待は膨らむのです
- Adobe Readerの脆弱性を突かれて人生初の『ウィルス』に感染・・・
- また4月なんで、フリーのレンタルサーバーの確認してみると・・・