2011-01-21 29 views
1

iFrameを挿入して、余分なスクリプト、CSSスタイルなどでページが乱雑にならないように、何かを行う必要がありますか?メインウィンドウとiFrameの間で会話ができない場合、どのように完了したかを検出してiFrameを削除するにはどうすればよいですか?Javascriptブックマークレットの一般的なデザインパターンは何ですか?

DOMにスクリプト/ CSSを挿入して作業しても問題ありませんか?

私の主な例はInstapaperのブックマークレットです。Instapaperのブックマークレットは、iFrameを使用して、すべて完了したら閉じます。

答えて

1

私が行ったすべてのブックマークレットは、メインページのDOMに直接挿入されます。すべてのコードはそのブックマークレットの名前空間の中にあり、DOMの汚染は最小限に抑えられています。もちろん、既存の変数名との衝突がないことを確認するチェックがあります。

それはすべてが簡単になりますので、メイン文書のDOMに挿入するための理由がある - そこにそれは:)

なければならないよりも、自分自身でそれを難し​​くするために何か良い理由はほとんどありません。しかし、もちろんこれが依存あなたの目標に

0

はパターン1:

javascript:(function(){ for (var i = 0; i < document.images.length; i++) document.images[i].title = document.images[i].alt; })() 

:それは void演算子のdocument.writeに渡されたように、任意のブックマークレットの戻り値のtoStringと行為を変換される

javascript:void(document.title += 'HAI!') 

はパターン2

ことを防止しますブックマークレットはグローバルスコープで実行されているため、上記の無名関数コードを使用しないと、ループカウンタは「リークする」window.i

関連する問題