Firefox 上的 window.open(url) 和 window.location.href = url 有什么区别?

2024-01-06

我正在尝试构建一个书签,将当前 url 作为参数提供给另一个 url。

然而我发现这

javascript:(function(){window.open("http://www.somesi.te/some/thing?url="+encodeURIComponent(window.location.href))})()

不起作用,而这

javascript:(function(){window.location.href = "http://www.somesi.te/some/thing?url="+encodeURIComponent(window.location.href)})()

做。除了明显的区别之外window.open打开另一个窗口,并且window.location.href更改位置,为什么后者有效,而前者只是打开另一个窗口到原始位置?

这是在火狐浏览器上。有趣的是,在 Chrome 上一切正常。

这是安全问题吗?


和...之间的不同window.open() and window.location.href就是它open() is a method窗口类,以及window.location is a property窗口类的。

1.window.open() is a method关于窗口类

呼叫window.open()方法实际上创建了一个窗口对象,可以将其保存在变量中并根据程序的要求进行操作。

为了演示 window.open() 实际上返回一个窗口对象,请考虑以下代码:

var mywindow = window.open("http://google.com");
mywindow.name = "Awesome Window";
console.log(typeof(mywindow)); // --> "object"
console.log(mywindow.name); // --> "Awesome Window"

您的代码打开不需要的窗口的原因是因为您正在调用window.open(),人生唯一的目的就是打开一扇新的窗户。

2. window.location is a 只读属性关于窗口类。

虽然window.location是只读属性,window.location有一个内置的快捷方式功能,允许window.location可分配,与调用效果相同window.location.assign(),它不会返回 window 对象,而是使用根 window 对象分配新的 url,从而导致新分配的 url 被加载到调用分配位置的 javascript 的浏览器窗口中。

如果您正在创建书市脚本,则使用window.location是获取当前窗口的 url 并将其分配给程序的 url 字符串的更好方法。

您可能会发现在不同浏览器中出现意外行为的原因是,没有为 window 对象设置官方公共标准,因此每个浏览器选择在幕后实现它的方式可能会有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox 上的 window.open(url) 和 window.location.href = url 有什么区别? 的相关文章

随机推荐