2016-03-02 80 views
0

我有一个脚本,如显示在下面的例子:更改脚本代码

<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哈希值更改为 “triggerURL” 然后_myplug.renderTo = 'happy';
  • 当再次URL哈希改变任何东西比 “triggerURL” 然后 _myplug.renderTo = ''

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

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

回答

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

非常感谢受访者,对于您的快速回复对不起,我的“非常好”的脚本知识,但任何人都可以发布整个脚本?这是因为我没有足够的知识将解决方案集成到现有脚本中。谢谢。 (@Dmitriy Loskutov,@ZachRabbit)。必须有一个地方来学习它(我在这里学到很多东西)。 – Cinzel

+0

哇,它的工作原理。但只有当我重新加载页面(它被正确的URL散列触发)。你知道如何在没有页面刷新的情况下让这个工作正常,但是每当指定的哈希变化出现时,即使没有页面重新加载?这是实际的目标。谢谢。 – Cinzel

+0

你的'_myplug'是否支持这个功能(跟踪hashchange)?在某些情况下,您必须在加载脚本之前初始化'_myplug.renderTo =“”''。如果你的'_myplug'不支持它,那么很可能你根本不需要跟踪hashchange事件。 –

0

您可以使用windowhashchange事件进行更改。在现代浏览器,这是因为这很容易:

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

你可以找到更多的信息,以及为老版本浏览器一个填充工具,在MDN

+0

谢谢,它的工作原理(请参阅@Dmitriy Loskutov发布的进一步实现,但它只在我重新加载页面时才起作用(它会在正确的URL哈希上触发)。如何让这个工作无需刷新页面,但是每当指定的哈希变化出现时,即使没有页面重新加载?也许我需要重新载入脚本,因为它在重新加载?谢谢。 – Cinzel