我的标签栏里面有链接,这会在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');
}
答案 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>
如果在执行事件时出现错误,这将阻止您的网页重新加载。