2012-04-28 12 views
0

Firefoxのアドオンでiframescrollイベントをエミュレートする必要があります。私は以下のコードを使用しましたが、動作しません。iframeスクロールは移動しません。私にとってもう一つの質問は、initUIEventがどの方向のスクロールイベントをディスパッチする必要があるかを知ることです。 (水平または垂直)FirefoxアドオンのIFrameにスクロールUIEventをディスパッチする方法はありますか

var windows = require("window-utils"), 
    selectedBrowser = windows.activeBrowserWindow.gBrowser.selectedBrowser, 
    contentWindow = selectedBrowser.contentWindow, 
    document = selectedBrowser.contentDocument; 

obj = document.getElementById("scrollable_frame"); 

evt = document.createEvent("UIEvents"); 

evt.initUIEvent("scroll", true, true, 
windows.activeBrowserWindow.gBrowser.selectedBrowser.contentWindow, 2); 

obj.dispatchEvent(evt); 

答えて

1

私はあなたのコードがイベントをうまくディスパッチすると思います。しかし、それはscrollイベントをトリガーするのはフレームスクロールであるため、あなたの問題を解決するのには役立ちません。何が必要なのフレームをスクロールすることであるなら、あなたは直接ルートを選択することができます。window.scrollByLineswindow.scrollByPagesを使用する:あなたはwindow.scrollByを使用することができます

obj = document.getElementById("scrollable_frame"); 
obj.contentWindow.scrollByLines(1); 

は、水平方向にスクロールするには。このコードでは、副作用としてscrollイベントが発生します。

+0

と私は要素をスクロールしたい場合、例えばスクロール可能な 'div'。どうやってやるの? 'div'要素の' scrollByLines'メソッドはありません。 –

+0

@AramAlipoor:[div.scrollTop'](https://developer.mozilla.org/ja/DOM/element.scrollTop)と[div.scrollLeft'](https://developer.mozilla。 org/en/DOM/element.scrollLeft)。 –

関連する問題