在打开新窗口时在IE浏览器中出现问题

时间:2014-12-08 10:14:16

标签: javascript jquery html internet-explorer

我有一小段代码

$("a").live("click",function(event) {
                    <% String lifeCare=LifeEventProperties.getInstance().getProperty("lifeCare");%>
                    var s="<%=lifeCare%>"; 
                    var href = $(this).attr('href');
                    if (href.indexOf(s) != -1) {
                        loadLifeCare(href) ;
                        event.preventDefault();
                    } 
                });

function loadLifeCare(href)
    {
        var wnd=window.open('/NASApp/benemain/LifeCareSite');
        setTimeout(function() {
            wnd.location.href = href;
        }, 6000);
    }

在我的jsp页面中,我已经使用jquery检查了url中的特定单词,并且该单词就像&#34; something.com&#34;我从属性文件中获取,现在如果在用户点击的url中找到了这个something.com,那么我正在调用一个javascript函数,然后打开一个带有内部站点URL的新窗口,它正在照顾用户&#39 ;该页面的会话有这个something.com然后我重新加载页面&#34; href&#34;该用户实际点击了。

问题是它在所有浏览器的其他IE中运行良好,我的客户喜欢IE, IE直接转到绕过loadLifeCare方法的链接,并在控制台上给我这个错误

The value of the property 'loadLifeCare' is null or undefined, not a Function object 

有什么可以暗示它为什么会发生吗?这段代码中有什么东西IE浏览器不明白,我觉得问题是关于window.open()也许但是我不确定而且我不知道如果是这样的话,甚至不知道任何替代方案。

请帮助我,告诉我你是否需要澄清任何事情......

1 个答案:

答案 0 :(得分:2)

试试这个

  1. 修正了已弃用的live
  2. 使用更好的方法来打开窗口(你的很可能会拒绝访问;
  3. 在使用函数之前将函数移动到并将click事件处理程序包装在加载处理程序
  4. function loadLifeCare(href) {
      var wnd=window.open('/NASApp/benemain/LifeCareSite',"lifeCareWin");
      if (wnd) setTimeout(function() {
        window.open(href,"lifeCareWin");
      }, 6000);
    }
    
    $(function() {
      $("a").on("click",function(event) {
        <% String lifeCare=LifeEventProperties.getInstance().getProperty("lifeCare");%>
        var s="<%=lifeCare%>"; 
        var href = $(this).attr("href"); // this.href might be useful too
        if (href.indexOf(s) != -1) {
          loadLifeCare(href) ;
          event.preventDefault();
        } 
      });
    });