与Firefox链接问题

时间:2015-06-03 09:25:45

标签: javascript html extjs

我的标签栏里面有链接,这会在Firefox上产生奇怪的行为。

当我点击Chrome上的链接时,网址为“http://localhost:8080/netmg/view/home#agregateShowMode=site&activeTabHomeAgregateSite=1”,并且找到了正确的标签 但是当我使用具有相同代码的Firefox时,URL变为
http://localhost:8080/netmg/view/home

HTML code:

<div class="tabs" id="tab-home-view">
  <ul class="tab-links">
    <li id="General" class="active"><a href="" onclick="javascript:App.workOnHomeTabs(this, '0');">General</a></li>
    <li id="device"><a href="" onclick="javascript:App.workOnHomeTabs(this, '1');" >Device</a></li>
    <li id="link"><a href="" onclick="javascript:App.workOnHomeTabs(this, '2');">Link</a></li>
    <li id="Service"><a href="" onclick="javascript:App.workOnHomeTabs(this, '3');">Service</a></li>
  </ul>
</div>

JS CODE:

App.workOnHomeTabs = function (obj, toAppend) {
    var url = window.location.href;
    if (url.includes("&activeTabHomeAgregateSite=")) {
    obj.href = url.replace(/(&activeTabHomeAgregateSite=)\d+/, '$1' + toAppend);
    }
    else {
      obj.href = url + "&activeTabHomeAgregateSite=" + toAppend;
    }
    Ext.select('#tab-home-view ul li').removeCls('active');
    Ext.get(obj).up('li').addCls('active');
}

1 个答案:

答案 0 :(得分:1)

问题在于:

var url = window.location.href;
if (url.includes("&activeTabHomeAgregateSite=")) {
  ...
}

在上面的if语句中,您调用String的&#34; includes&#34; 方法。这种方法是实验技术(在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes中指定)并且不应该使用它,因为它很新。

谷歌浏览器已经实现了这项新功能,因此当您点击&#34; a&#34;元素按预期工作,并将您重定向到正确的页面。

然而, Firefox 尚未实现它,因此当您执行该功能时,它会抛出错误并且&#34; a&#34;您单击的元素的行为类似于普通链接,并重新加载当前页面,因为您离开了&#34; href&#34;属性为空。

<a href=""></a>

如果我是你,我会将if语句更改为适用于每个浏览器的if语句:

var url = window.location.href;
if (url.indexOf("&activeTabHomeAgregateSite=") != -1) {
  ...
}

我会填写&#34; href&#34; &#34; a&#34;的属性带有哈希符号的元素,如下所示:

<a href="#"></a>

如果在执行事件时出现错误,这将阻止您的网页重新加载。