gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:40:27 25 4
gpt4 key购买 nike

我正在尝试构建一个小书签,将当前 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 改变位置的明显区别外,为什么后者有效,而前者只是打开另一个窗口原来的位置?

这是在 Firefox 上。有趣的是,在 Chrome 上一切正常。

这是安全问题吗?

最佳答案

window.open()window.location.href 的区别在于 open() 是一个方法 是窗口类的,window.location 是窗口类的属性

1.window.open() 是窗口类的方法

调用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 是窗口类的只读属性

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

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

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

关于javascript - Firefox 上的 window.open(url) 和 window.location.href = url 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com