sim*_*one 8 javascript firefox
我正在尝试构建一个bookmarklet,将当前url作为参数提供给另一个url.
但是我发现了这一点
javascript:(function(){window.open("http://www.somesi.te/some/thing?url="+encodeURIComponent(window.location.href))})()
Run Code Online (Sandbox Code Playgroud)
这不起作用
javascript:(function(){window.location.href = "http://www.somesi.te/some/thing?url="+encodeURIComponent(window.location.href)})()
Run Code Online (Sandbox Code Playgroud)
确实.除了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"
Run Code Online (Sandbox Code Playgroud)
您的代码打开一个不需要的窗口的原因是因为您正在打电话window.open(),其生活的唯一目的是打开一个新窗口.
2. window.location是窗口类的只读属性.
尽管window.location是一个只读属性,但它window.location具有允许window.location可分配的内置快捷方式功能,它具有与调用相同的效果window.location.assign(),它不返回窗口对象,但使用根窗口对象将新URL分配给,导致新分配的URL被加载到浏览器窗口中,其中调用了分配位置的javascript.
如果您正在创建bookmarket脚本,那么使用window.location是获取当前窗口的url并将其分配给程序的url字符串的更好方法.
您可能会发现在不同浏览器中遇到意外行为的原因是窗口对象没有正式的公共标准集,因此每个浏览器选择在幕后实现它的方式可能会有所不同.
| 归档时间: |
|
| 查看次数: |
10174 次 |
| 最近记录: |