3

好吧,我要疯了。我正在尝试实现一个基本的弹出窗口来显示图像。如果我的 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文件。当使用模板工具(在我的例子中为模板工具包)的多个脚本创建 div 的层时,有一些东西使 head 元素中的原始脚本元素对更深的子元素似乎不可见。

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

编辑2:

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

4

5 回答 5

3

在这里演示

在我看来,这段代码是最接近万无一失的。

经测试

  • Windows - Fx、Chrome、IE8 和 Safari
  • iPhone:移动 Safari
  1. 如果允许,添加目标会使链接在新窗口或选项卡中打开 - 以防脚本因任何原因失败 - 这是一个有用的副作用,但不是问题的答案。
  2. 如果 window.open 失败,则返回 true 也会使点击跟随链接,希望调用目标 - 请注意,某些浏览器不再对目标做出反应。
  3. 第三个参数中的高度(和宽度)将强制在新窗口而不是新选项卡中打开,除非浏览器设置为在选项卡中打开所有新窗口
<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>
于 2012-04-10T11:01:19.230 回答
1

使用目标="_blank"

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

来自 HTML,或

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

来自 javascript

于 2012-04-10T10:17:58.457 回答
0

使新窗口标题随机

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

并在功能上:

if(title=='random')
{
title = randomID();
}
于 2017-01-19T12:39:36.387 回答
-1

试试这个

function mypopup()
{
    mywindow = window.open("http://www.test.com", "mywindow", "location=1,status=1,scrollbars=1,  width=100,height=100");
}
于 2012-04-10T10:20:21.890 回答
-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 中都没有任何问题

于 2012-04-10T10:28:45.957 回答