打开新窗口的书签会将当前窗口转发到[对象窗口]?

问题描述 投票:0回答:3

我正在使用一个小书签,它可以在新窗口中打开网页。它在 Chrome 上运行正常。

但是,当我在 Firefox 中使用相同的功能时,它会打开一个包含新网页的新窗口,但单击此书签的页面将转发到带有文本

[object Window]
的某个页面。我该如何解决这个问题?

我的代码:

<a href="javascript:open('http://www.google.com','targetname','height=500,width=500');">Bookmarklet</a>

请让我知道如何解决这个问题。

谢谢

javascript firefox google-chrome bookmarklet
3个回答
20
投票

你必须“吃掉”JavaScript URL 中的最后一个返回值,返回任何

typeof returnValue != 'undefined'
都相当于调用
document.write(returnValue)
。并且
window.open
返回新创建的
window
对象,因此输出“[object Window]”。当然,你可以通过无意识地附加
void(0)
语句来做到这一点,但它太笨拙了。无魔法版本(返回值被吃掉,调用窗口不受干扰):

javascript:void(open('http://www.google.com','targetname','height=500,width=500'))

您可能会扩展您的书签,因此为了防止全局范围混乱,您最好采用匿名函数方式(注意缺少

return
语句):

javascript:(function(){open('http://www.google.com','targetname','height=500,width=500');/* more code to go */})()

1
投票

试试这段代码,我添加了“void(0);”单击后停止父窗口消失。

<a href="javascript:open('http://www.google.com','targetname','height=500,width=500');void(0);" >Bookmarklet </a>

-1
投票

我用这个制作了一款便携式僵尸游戏! javascript:open('https://sites.google.com/kcsdschools.org/pvz','targetname','height=500,width=500');void(0); 谢啦!上帝保佑你

© www.soinside.com 2019 - 2024. All rights reserved.