#在页面加载后自动出现URL

时间:2016-07-08 22:59:25

标签: javascript

如果您访问链接http://www.feriebolig-europa.dk/,则会在页面加载后显示尾随/#。

这基本上是这个脚本的一个问题:

<script type="text/javascript" src="https://p14943.atraveo.com/index.php?controller=partnerintegration&action=default&width=1080&height=1000&lg=da&cur=DKK&versionname=Spanien_landingpage"></script>

其中包含3种不同的javascripts。影响脚本是:

http://p14943.atraveo.com/website/static/js/partnerFrame.js

来源的剧本:

<script type="text/javascript">
window.addEventListener("message", function(a) {
    if (!("website" !== a.origin.substr(a.origin.length - 7) && ".atraveo.com" !== a.origin.substr(a.origin.length - 12) && ".atraveo.de" !== a.origin.substr(a.origin.length - 11) && ".atraveo-test.de" !== a.origin.substr(a.origin.length - 16)))
        if ("scrollUp" == a.data) window.location.hash = "atraveo", window.location.hash = "";
        else if ("scrollToFrame" == a.data) {
        if (a = document.getElementById(atraveoFrameId)) a = a.offsetTop, document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop =
            a : document.body.scrollTop = a
    } else document.getElementById(atraveoFrameId).style.height = a.data + "px"
}, !1);
</script>

以下一行是更具体的可能原因:

if ("scrollUp" == a.data) window.location.hash = "atraveo", window.location.hash = "";

如果我添加:

window.location.href.replace('#', '');

用线来解决问题。

但是,由于我无法控制第三方网站,我想知道是否可以从我这边做任何事情?

1 个答案:

答案 0 :(得分:0)

try {
    //check wether it's working + initial cleanup
    history.replaceState( history.state, document.title, location.href.replace(/#$/,"") );

    //if the code didn't throw yet, add the event-listener
    addEventListener("hashchange", function(){
        var href = location.href, regex = /#$/;
        if(regex.test(href)) 
            history.replaceState( history.state, document.title, href.replace(regex, "") );
    }, false);
}catch(err){}

历史操作可能在某些浏览器中不可用,这就是为什么我将代码包装在try-catch-block中并触发history.replaceState()的原因。

另一方面,如果此代码在较旧的浏览器中失败,则尾随#可能没有吸引力,但它并不重要,需要不惜一切代价修复。