Javascript的window.open函数不一致,在预期时不会弹出

时间:2012-04-10 10:12:44

标签: javascript window

好的,我在这里疯了。我正在尝试实现一个基本的弹出窗口来显示图像。如果我的javascript代码在带有onclick属性的HTML标记中完全指定,则会正确弹出窗口。如果从HTML文档开头的脚本标记或单独的js文件调用我的IDENTICAL javascript代码,则链接(或我的图像中的图像)不会在弹出窗口中打开,而是在同一窗口中打开。 <沮丧>

这会打开一个弹出窗口:

<a href="test.jpg" onclick="window.open('test.jpg','test_name','width=500,height=500,scrollbars=no'); return false">test_name</a>


这不会打开弹出窗口:

function cleanPopup(url, title) {
window.open(url, title, 'width=500,height=500,scrollbars=no');
return false;
}

<a href="test.jpg" onclick="return cleanPopup('test.jpg', 'test_name')">test_name</a>


任何帮助将不胜感激。

PS:在Chrome和Firefox中测试过。

编辑:

我发现了我的问题。我最初只在head标签中调用了js文件。当使用模板工具的多个脚本(在我的情况下为Template Toolkit)创建div时,有一些关于div的层,这使得head元素中的原始script元素看起来对于更深的子元素是不可见的。

我不确切知道发生了什么,我没有时间去探索它。我添加了这个编辑,以防万一其他人有类似的问题,并在某种程度上偶然发现这个线程。如果有人理解这种现象,并且可以解释,请做。

编辑2:

window.open方法的“name”参数不能包含弹出窗口在IE中工作的空格。谢谢M $。

5 个答案:

答案 0 :(得分:3)

DEMO HERE

这段代码是我认为最接近万无一失的代码。

经过测试

  • Windows - Fx,Chrome,IE8和Safari
  • iPhone:Mobile Safari
  1. 添加目标会使链接在新窗口或标签中打开(如果允许) - 如果脚本因任何原因失败 - 这是一个有效但不能回答问题的SIDE-EFFECT。
  2. 如果window.open失败则返回true也会使点击跟随链接,希望调用目标 - 请注意,某些浏览器不再对目标做出反应。
  3. 第三个参数中的高度(和宽度)将强制在新窗口中打开而不是新选项卡,除非将浏览器设置为在选项卡中打开所有新窗口
  4. <html>
    <head>
    <script type="text/javascript">
    window.onload=function() {
     document.getElementById('popup').onclick=function() {
       var w = window.open(this.href, this.target, 
           'width=500,height=500,scrollbars=no');
        return (!w); // opens in new window/tab if allowed
      }
    }
    </script>
    </head>
    <body>
    
    <a id="popup" href="test.jpg" target="test_name">test_name</a>
    </body>
    </html>
    

答案 1 :(得分:1)

使用target =&#34; _blank&#34;

<a href="whatever" target="_blank"> ...

来自HTML或

window.open(url, '_blank', options)

来自javascript

答案 2 :(得分:0)

随机设置新窗口标题

onclick="PopupCenter(this.href,'random','600','700','yes'); return false;"

并且在功能中:

if(title=='random')
{
title = randomID();
}

答案 3 :(得分:-1)

试试这个

function mypopup()
{
    mywindow = window.open("http://www.test.com", "mywindow", "location=1,status=1,scrollbars=1,  width=100,height=100");
}

答案 4 :(得分:-2)

确保将您的javascript代码放在Head块中

<head>
<script type="text/javascript" language="JavaScript">
function cleanPopup(url, title) {
    window.open(url, title, 'width=500,height=500,scrollbars=no');
    return false;
}
</script>

在身体里:

<a href="" onclick="cleanPopup('test.jpg','test_name')">test_name</a>

它对我有用,在Firefox和IE中没有任何问题