繁体   English   中英

javascript弹出问题在Internet Explorer中!

[英]javascript popup issue In Internet Explorer !

我有问题在javascript中打开弹出窗口我有这个功能在IE6和IE7中打开我的弹出窗口:

function open_window(Location,w,h) //opens new window
{
  var win = "width="+w+",height="+h+",menubar=no,location=no,resizable,scrollbars,top=500,left=500";
  alert(win) ;
  window.open(Location,'newWin',win).focus();

}

它正在工作。 我的意思是我的新窗口打开但发生错误。 错误消息是:

'window.open(...)'为null不是对象。
你想在这个页面上计算运行脚本吗?

然后我在onclick事件中有按钮它会调用一个函数关闭当前窗口刷新开启功能

function refreshParent(location) 
{
  window.opener.location.href = location ; 
  window.close();
}

它也给了我错误:window.opener.location为null或不是对象,但我确定我传递了正确的参数

我称之为:

第二部分:

<input type="button" name="pay" value="test" onclick="refreshParent('index.php?module=payment&task=default')" >

第一部分:

<a onclick="javascript:open_window('?module=cart&task=add&id=<?=$res[xproductid]?>&popup=on','500' , '500')"  style="cursor:pointer" id="addtocard"> <img src="../images/new_theme/buy_book.gif" width="123" border="0"/> </a>

这让我很困惑。 请帮忙 ;)

当使用window.open打开的弹出窗口被弹出窗口阻止程序阻止时,这几天是几乎所有现代浏览器的一个特性,window.open()的返回值不是窗口对象,而是null。

为了避免这些问题,您需要在尝试调用其上的任何方法之前测试window.open()返回的值。

下面是一段代码,演示如何解决此问题:

function open_window(Location,w,h) //opens new window
{
  var options = "width=" + w + ",height=" + h;
  options += ",menubar=no,location=no,resizable,scrollbars,top=500,left=500";

  var newwin = window.open(Location,'newWin',options);

  if (newwin == null)
  {
    // The popup got blocked, notify the user
    return false;
  }

  newwin.focus();
}

通常,弹出窗口应仅用作最后的手段或受控环境(公司内部网站等)。 弹出窗口阻止程序往往表现得非常不一致,并且在给定的浏览器中可能安装了多个弹出窗口阻止程序,因此指示用户如何允许给定网站的弹出窗口不一定是解决方案。 示例:IE7 + Google工具栏=两个弹出窗口阻止程序。

如果我建议,也许你应该考虑使用这样的东西: http//jqueryui.com/demos/dialog/

优点很多:

  1. Skinnable,因此您可以创建更一致的外观以匹配您的网站。
  2. 没有弹出窗口拦截器。
  3. 良好的API和文档在大多数(如果不是全部)主流浏览器中都是一致的。

如果仍然要求新打开的“窗口”包含外部URL,则可以在打开的对话框窗口中使用IFRAME。

希望这可以帮助,

利奥尔。

这是一种让你的蛋糕和吃它的方法我没有在所有的浏览器上测试它,但它应该真的有用

function open_window(url,target,w,h) { //opens new window 
  var parms = "width="+w+",height="+h+",menubar=no,location=no,resizable,scrollbars,top=500,left=500";
  var win = window.open(url,target,parms);
  if (win) {
    win.focus();
    return false; // cancel the onClick
  }
  return true; // make the link perform as normal
}

使用链接

<a href="?module=cart&task=add&id=<?=$res[xproductid]?>&popup=on"
target="newWin" 
onclick="return open_window(this.href,this.target,500,500)"
id="addtocard"><img src="../images/new_theme/buy_book.gif" width="123" border="0"/></a>

它甚至可以为你节省愚蠢的光标,因为它是一个真正的链接,即使关闭JS也可以工作

对我来说效果很好。 在IE6 / 7/8中测试过。

当然我无法使用您的URL测试它,所以我用简单的文件名替换它们。 我建议你也尝试使用简单的文件名,看看它是否也失败了。

除此之外...

您不需要在onclick属性值的开头添加“javascript:”。

如果您使用与open_window相同的URL向链接添加href =“...”属性也会很好。 然后它将成为一个真正的链接,你不必添加光标:指向它的指针。 例如:

<a href="?module=cart&task=add&id=<?=$res[xproductid]?>&popup=on"
   onclick="open_window(this.href, '500' , '500'); return false;"> ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM