Javascript 更改浏览器的窗口大小以进行测试
为了用不同的屏幕分辨率测试网站的(响应性)外观,我想以编程方式启动具有特定窗口大小的浏览器,以模拟这些屏幕大小 最好的办法是在浏览器已经运行时更改窗口大小,尽管我读到window.resizeTo()函数在现代浏览器中不再起作用。 我处于浏览器扩展的环境中,因此我也可以使用它的功能。然而,我在这里找不到任何适合我需要的东西: 一个不太令人满意的解决方案是以固定的屏幕大小启动浏览器(尽管我不知道这是如何工作的,因为至少Firefox没有这样的启动参数) 我想一定有办法控制窗户的大小。我还试图用样式宽度和高度属性来包装一个给定网站的主体,但与使用该窗口大小访问该网站相比,该网站的行为完全不同 我使用的是Unix系统(Mac OS X Yosemite) 编辑 我最终解决了以下问题:Javascript 更改浏览器的窗口大小以进行测试,javascript,html,css,firefox,window,Javascript,Html,Css,Firefox,Window,为了用不同的屏幕分辨率测试网站的(响应性)外观,我想以编程方式启动具有特定窗口大小的浏览器,以模拟这些屏幕大小 最好的办法是在浏览器已经运行时更改窗口大小,尽管我读到window.resizeTo()函数在现代浏览器中不再起作用。 我处于浏览器扩展的环境中,因此我也可以使用它的功能。然而,我在这里找不到任何适合我需要的东西: 一个不太令人满意的解决方案是以固定的屏幕大小启动浏览器(尽管我不知道这是如何工作的,因为至少Firefox没有这样的启动参数) 我想一定有办法控制窗户的大小。我还试图用样式
var tabs = require("sdk/tabs");
function showPage(tab) {
var {
viewFor
} = require("sdk/view/core");
var win = viewFor(require("sdk/windows").browserWindows[0]);
win.resizeTo(dimension.width, dimension.height);
tab.on("pageshow", attachScript);
tabs.removeListener('open', showPage);
}
tabs.on('open', showPage);
你试过这个图标吗?您可以选择所需的任何设备,或者只控制视口的宽度和高度。我发现唯一接近调整chrome窗口大小的方法是使用可以调整窗口大小的chrome扩展。实际的扩展命令是
chrome.windows.update(…)
但我不确定这就是你要找的。
如果您仍然感兴趣,至少有两个扩展可以做到这一点,我已经看过了try有几种可能的解决方案:
about:config
并确保dom.disable\u window\u move\u resize
设置为false
。现在您可以调整弹出窗口的大小:
var myWindow = window.open("about:blank", "SomeName", "width=300,height=300");
myWindow.resizeTo(200, 400);
并调整其大小window.resizeTo(400500)
。当我试图在属于网页的普通“Web控制台”中运行这一行时,它不起作用。但它在使用“浏览器工具箱”时工作,该工具箱属于整个浏览器chrome。我认为附加组件也可以拥有这些特权
更新:我创建了一个工作示例:
var buttons = require('sdk/ui/button/action');
browserWindows = require("sdk/windows").browserWindows;
viewFor = require("sdk/view/core");
buttons.ActionButton({
id: "resize-window",
label: "Resize Window",
icon: {
"16": "./icon-16.png",
"32": "./icon-32.png",
"64": "./icon-64.png"
},
onClick: handleClick
});
function handleClick(state) {
var win = viewFor(browserWindows[0]);
win.resizeTo(500, 500);
}
resize to 480 800
),但我不知道如何从外部触发它们:-/-width
和-height
可能不是所有的解决方案都适合您的测试环境,但希望至少有一个适合;) 这个答案不是很可靠,因为每次将新项目添加到工具菜单时,您都必须编辑脚本。它对普通用户也没有帮助,因为它需要您编辑一些Python代码。也就是说,它是有效的,对于那些不想安装附加组件的人来说可能很有用
import gtk
from random import randint
import subprocess
import time
import wnck
def main():
firefox = subprocess.Popen(['firefox'])
# start with a maximized screen. If this is undesired,
# use code on lines 45 - end, disregaurding the rest
sentinal = True
while sentinal:
screen = wnck.screen_get_default()
while gtk.events_pending():
gtk.main_iteration()
windows = screen.get_windows()
for w in windows:
if w.get_pid() == firefox.pid:
w.maximize()
sentinal = False
time.sleep(1)
# click the 'Tools' menu in Firefox
subprocess.call(['xdotool', 'mousemove', '--sync', '300', '80'])
subprocess.call(['xdotool', 'click', '1'])
time.sleep(1)
# hover over 'Web Developer' sub-menu
# (i.e. Tools -> Web Developer)
subprocess.call(['xdotool', 'mousemove_relative', '--sync', '0', '180'])
subprocess.call(['xdotool', 'click', '1'])
# click the responsive design view sub-menu
# (i.e. Tools -> Web Developer -> Responsive Design View)
subprocess.call(['xdotool', 'mousemove_relative', '--sync', '300', '0'])
time.sleep(1)
subprocess.call(['xdotool', 'mousemove_relative', '--sync', '0', '300'])
time.sleep(1)
subprocess.call(['xdotool', 'click', '1'])
# set your window size here
y = ['1280x600']
choice = y[0]
# click the uri bar
subprocess.call(['xdotool', 'mousemove', '--sync', '110', '144'])
time.sleep(1)
subprocess.call(['xdotool', 'click', '1'])
# tab to the drop-down resolution menu
for i in range(0, 3):
subprocess.call(['xdotool', 'key', 'Tab'])
# erase whatever is in the resolution menue by default
for j in range(0, 15):
subprocess.call(['xdotool', 'key', 'BackSpace'])
# enter a random (standardized) screen resolution
subprocess.call(['xdotool', 'type', choice])
subprocess.call(['xdotool', 'key', 'Return'])
if __name__ == '__main__':
main()
您可以打开一个新窗口并指定其大小。您是否尝试过加载项?打开一个新窗口实际上是可能的。我会试试看。谢谢。应该注意的是,该解决方案仅在Chrome中可用,而不是Firefox(根据标签和原始问题)。如果在Chrome中进行测试是一种选择,那么这绝对是一个很好的解决方案!正如我所说的,我想通过编程来实现这一点。如果这可以通过API或其他扩展触发就好了。如果有人需要手动点击某个东西,这是没有帮助的。我在Chrome中没有问题,因为我可以使用一个webview,我可以指定它的维度。Firefox更像是一个问题:-/Hmm,我不知道这个问题是针对Mac的。这在Ubuntu上有效,但我不确定Mac是否有效。