IFrameにイベントリスナーを追加することは可能ですか?私はこのコードを試しましたが、それはうまくいかないようです。
document.getElementsByTagName('iframe')[0].contentWindow.window.document.body.addEventListener('afterLayout', function(){
console.log('works');
});
_
私はIDによって要素を取得し、私が使用しているJavaScriptフレームワークを使ってリスナーを追加してみました。
Ext.fly("iframeID").addListener('afterLayout', function(){ alert('test'); });
_
IFrameで関数を呼び出すことができるので、セキュリティが問題ではありません。何か案は?
私は「AfterLayout」のイベントを扱うことは決してなかったが、よりブラウザ互換コードのために使用することはできません(iframe.contentWindow || iframe.contentDocument
) それ以外の iframe.contentWindow
。
好きなことを試してみてください
var iframe = document.getElementsByTagName('iframe')[0],
iDoc = iframe.contentWindow // sometimes glamorous naming of variable
|| iframe.contentDocument; // makes your code working :)
if (iDoc.document) {
iDoc = iDoc.document;
iDoc.body.addEventListener('afterLayout', function(){
console.log('works');
});
};
_
それが助けることを願っています。
USTで深刻なIFRAME機能を実行している場合は、ManagedIframeユーザー拡張子を調べてください。
http://www.extjs.com/forum/showthread.php?t=40961
それは内蔵のイベントとクロスフレームメッセージング、そして他の多くの利点を特徴としています。