【问题标题】: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>

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

谢谢

【问题讨论】:

    标签: javascript firefox google-chrome bookmarklet


    【解决方案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>
    

    【讨论】:

    • 我认为使用 Stackoverflow 是最好的方法! =D
    • 具有误导性,stuckoverflaw 和您的示例。下面:
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多