Javascript 如何通过代码切换Firefox响应设计视图分辨率

Javascript 如何通过代码切换Firefox响应设计视图分辨率,javascript,jquery,firefox,firefox-addon,Javascript,Jquery,Firefox,Firefox Addon,我使用以下代码从基于xul的插件打开firefox响应设计视图 var mytmp = {}; Cu.import("resource://gre/modules/Services.jsm"); Services.prefs.setCharPref("devtools.responsiveUI.presets", JSON.stringify([{name:'tmp1', key: "234x899", width:300,height:300}])); Cu.import("resource:

我使用以下代码从基于xul的插件打开firefox响应设计视图

var mytmp = {};
Cu.import("resource://gre/modules/Services.jsm");
Services.prefs.setCharPref("devtools.responsiveUI.presets", JSON.stringify([{name:'tmp1', key: "234x899", width:300,height:300}]));
Cu.import("resource:///modules/devtools/responsivedesign.jsm", mytmp);
var win = window.bridge.myWindow;

mytmp.ResponsiveUIManager.toggle(win, win.gBrowser.tabContainer.childNodes[0]);
以下是切换分辨率的代码

this.menulist.addEventListener("select", this.bound_presetSelected, true);

/**
* When a preset is selected, apply it.
*/
presetSelected: function RUI_presetSelected() {
 if (this.menulist.selectedItem.getAttribute("ispreset") === "true") {
   this.selectedItem = this.menulist.selectedItem;

   this.rotateValue = false;
   let selectedPreset = this.menuitems.get(this.selectedItem);
   this.loadPreset(selectedPreset);
   this.currentPresetKey = selectedPreset.key;
   this.saveCurrentPreset();

   // Update the buttons hidden status according to the new selected preset
   if (selectedPreset == this.customPreset) {
     this.addbutton.hidden = false;
     this.removebutton.hidden = true;
   } else {
     this.addbutton.hidden = true;
     this.removebutton.hidden = false;
   }
 }
},

我试图访问菜单列表并自己执行事件触发器,但无法访问它。如何选择下拉列表?

假设响应用户界面已打开

gBrowser.selectedTab.\uu responsiveUI.setSize(320480);
更新:


我想当然地认为您想要设置任意大小,但实际上您询问了预设值。这仍然是一个有效的答案吗?

假设响应用户界面已打开

gBrowser.selectedTab.\uu responsiveUI.setSize(320480);
更新:


我想当然地认为您想要设置任意大小,但实际上您询问了预设值。这仍然是一个有效的答案吗?

paa的答案确实有效,但它在屏幕预设中创建了一个新的自定义条目,但没有选择现有条目。可以通过在预设的选择ui上触发单击事件来执行此操作

像这样

var win = window.bridge.myWindow;
var i = 3 // index of the preset to be selected
var responsiveUI= win.gBrowser.selectedTab.__responsiveUI;
$(responsiveUI.menulist.children[0].children[i]).trigger('click');

paa的答案确实有效,但它会在屏幕预设中创建一个新的自定义条目,但不会选择现有条目。可以通过在预设的选择ui上触发单击事件来执行此操作

像这样

var win = window.bridge.myWindow;
var i = 3 // index of the preset to be selected
var responsiveUI= win.gBrowser.selectedTab.__responsiveUI;
$(responsiveUI.menulist.children[0].children[i]).trigger('click');

您是否尝试过查看
win
的DOM?也许它就在那里。在开发者工具中打开
chrome调试
的情况下,尝试浏览器控制台,查看
window.bridge.myWindow
对象的DOM树是否可访问。您是否尝试查看
win
的DOM?也许它就在那里。在开发者工具中打开
chrome调试
的情况下,尝试浏览器控制台,查看
window.bridge.myWindow
对象是否可以访问其DOM树。是否导入jQuery时使用了
$
触发器
?或者美元符号是可用的功能?谢谢分享解决方案,顺便说一句,这有助于未来的用户搜索。这是jquery。但这不是必须的。为什么要将jquery引入插件?它带来了大量的开销。AMO的编辑们不喜欢它。特别是当你把它插入响应窗口时,我不会把它插入响应窗口。正如我所说,我用它来阐述解决方案。您也可以使用本机js触发click函数。您导入jQuery的是
$
触发器吗?或者美元符号是可用的功能?谢谢分享解决方案,顺便说一句,这有助于未来的用户搜索。这是jquery。但这不是必须的。为什么要将jquery引入插件?它带来了大量的开销。AMO的编辑们不喜欢它。特别是当你把它插入响应窗口时,我不会把它插入响应窗口。正如我所说,我用它来阐述解决方案。您也可以使用本机js触发click函数。