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

Change script code on URL hash change

本文关键字:脚本 代码 URL 哈希更 更改      更新时间:2023-09-26

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

<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>

确切地知道我必须做什么更改,但我不知道如何在编码语言中完成此操作。

我需要做的是:

  • 当URL哈希更改为"触发器URL"时,_myplug.renderTo = 'happy';
  • 当 URL 哈希再次更改为"triggerURL"以外的任何内容时,则 _myplug.renderTo = ''

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

任何有解决方案的人.....多谢!

<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>
您可以使用

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

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

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