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

Posted

技术标签:

【中文标题】用于打开新窗口的书签将当前窗口转发到 [对象窗口]?【英文标题】:Bookmarklet to open a new window forwards current window to [Object Window]? 【发布时间】:2011-07-17 03:04:48 【问题描述】:

我正在使用一个在新窗口中打开网页的小书签。它在铬上正常工作。

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

我的代码:

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

请告诉我如何解决这个问题。

谢谢

【问题讨论】:

【参考方案1】:

您必须“吃掉”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 */)()

【讨论】:

好答案,我喜欢第一个字符较少的解决方案。谢谢! @ahgood,是的,但它只适用于非常短的书签,否则它将中间变量(例如:循环计数器)作为窗口属性 IE 是否仍然对书签长度施加字符限制,顺便说一句? 仅供参考:subsimple.com/bookmarklets/rules.asp Browser Max chars Netscape > 2000 Firefox > 2000 Opera > 2000 IE 4 2084 IE 5 2084 IE 6 508 IE 6 SP 2 488 IE 7 beta 2 2084 @ahgood,谢谢,很高兴知道 IE 用户不再受限制。刚刚检查过 - 现代 Opera 能够存储和执行相当大小的 100 000 个字符的书签【参考方案2】:

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

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

【讨论】:

我认为使用 *** 是最好的方法! =D 具有误导性,stuckoverflaw 和您的示例。下面:

以上是关于用于打开新窗口的书签将当前窗口转发到 [对象窗口]?的主要内容,如果未能解决你的问题,请参考以下文章

vim 常用 NERDTree 快捷键

如何chrome打开新窗口就最大化?

在新选项卡/窗口中打开页面并将当前窗口定向到新 url

JS window.open()打开新窗口、监听新窗口关闭事件

chromewindowopen新窗口session传不了

window打开新窗口