更改URL哈希更改的脚本代码

时间:2016-03-02 23:02:52

标签: javascript jquery hash triggers

我有一个脚本,如下例所示:

<script type="text/javascript">
var _myplug = _myplug || {};
_myplug.key = '12e9u349u43098j8r940rjciocjo';
_myplug.renderTo = '';
window.myplug||(function(d) {
    var s,c,o=myplug=function(){ o._.push(arguments)};o._=[];
    s=d.getElementsByTagName('script')[0];c=d.createElement('script');
    c.type='text/javascript';c.charset='utf-8';c.async=true;
    c.src='js/loader.js?';s.parentNode.insertBefore(c,s);
})(document);
</script>

我确切地知道我必须做什么改变,但我不知道如何在编码语言中实现这一点。

我需要做的是:

  • 当网址哈希变为“triggerURL”,然后_myplug.renderTo = 'happy';
  • 当URL哈希再次更改为“triggerURL”之外的任何内容时 _myplug.renderTo = ''

这是因为URL可以随时更改(不离开页面),每次上述哈希更改发生时,其他描述的更改都需要以某种方式完成。

任何有解决方案的人.....非常感谢!

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript">
var _myplug = _myplug || {};
_myplug.key = '12e9u349u43098j8r940rjciocjo';
_myplug.renderTo = '';
window.myplug||(function(d) {
    var s,c,o=myplug=function(){ o._.push(arguments)};o._=[];
    s=d.getElementsByTagName('script')[0];c=d.createElement('script');
    c.type='text/javascript';c.charset='utf-8';c.async=true;
    c.src='js/loader.js?';s.parentNode.insertBefore(c,s);
})(document);    

function changeHash () {
   var hash = (window.location.hash || '#').slice(1);
   if (hash === 'triggerURL') {
       _myplug.renderTo = 'happy';
   } else {
       _myplug.renderTo = '';
   }
}

changeHash(); // init 
window.addEventListener('hashchange', changeHash, false);
</script>

答案 1 :(得分:0)

您可以使用hashchange上的window事件来执行更改。在现代浏览器中,它就像这样简单:

window.addEventListener('hashchange', function (ev) {
    if (window.location.hash === '#triggerURL') {
        // Your Code Here
    }
}, false)

您可以在MDN上找到更多信息,以及旧版浏览器的填充。