如何在Firefox插件中的IFrame上调度滚动UIEvent?

时间:2012-04-28 09:50:46

标签: events firefox firefox-addon firefox-addon-sdk

我需要在我的Firefox插件中模拟scroll上的iframe事件。我使用下面的代码,但它不起作用,iframe滚动不会移动。另一个问题是initUIEvent如何知道必须分派哪个方向滚动事件? (水平或垂直)

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 个答案:

答案 0 :(得分:1)

我认为您的代码调度事件就好了。但它无助于解决您的问题,因为它是框架滚动触发scroll事件,而不是反过来。如果您需要滚动框架,则可以选择直接路线:使用window.scrollByLineswindow.scrollByPages

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

要水平滚动,您可以使用window.scrollBy。此代码还会触发scroll事件作为副作用。