Bookmarklet打开一个新窗口将当前窗口转发到[Object Window]?

时间:2011-03-17 04:17:26

标签: javascript firefox google-chrome bookmarklet

我正在使用一个小书签,它在新窗口中打开一个网页。它适用于chrome。

然而,当我在Firefox中使用相同内容时,它会打开一个带有新网页的新窗口,但点击此书签的页面将转发到某个文本为[object Window]的页面。我该如何解决这个问题?

我的代码:

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

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

由于

2 个答案:

答案 0 :(得分:16)

您必须在JavaScript网址中“吃掉”最后一个返回值,返回任何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 :(得分:1)

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

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