2014-10-31 51 views
0

我正在使用第三方应用程序,他们有一个JS变量硬编码到他们的HTML,我需要更改/更新与JavaScript或jQuery,都可以使用。更改硬编码JS变量值

的第三方应用程序已经变量硬编码到页面:

<script type="text/javascript" charset="utf-8"> 
var order_poNumber = ""; 
</script> 

当用户从下拉列表中选择一个值,该值被更新(我的下拉列表中,没有第三方):

<script type="text/javascript" charset="utf-8"> 
var order_poNumber = "32380080-64060"; 
</script> 

但问题是价值坚持原因。如果您转到其他页面并返回(不是使用后退按钮,而是转到其他页面,然后单击链接返回发生此问题的订单页面)值仍然设置为32380080-64060但我需要它像原来一样空白。

我已经试过:

function resetPO(){ 
    order_poNumber = ""; 
} 
window.onload = resetPO(); 

和那几个其他的变化,但它不会工作。

我必须从外部JS文件做BT。

任何想法?

我正在寻找一种方法来覆盖硬编码在HTML中的JS脚本块中的变量order_poNumber中存储的值。理想情况下,我希望某种迟到或甚至延迟的JS进入并在页面加载后覆盖该值。在下拉菜单(AJAX,ActiveX,JS,jQuery,以及第三方应用程序和我自己的代码和函数的混合)中选择了一个数字后,有很多步骤需要花费大量工作才能工作正确的,所以我不想再混淆了所有这些。

+1

我可以想象价值的唯一原因是它被存储在cookie中。你需要验证这一点,如果是的话,你需要编写一个脚本来清除cookie中的值。 – trnelson 2014-10-31 16:50:59

+1

你最近怎么样“回来”?如果您使用的是浏览器的_back_按钮,则为“窗口”。onload'可能并不总是被解雇。看看[这个问题](http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button) – 2014-10-31 16:52:16

+1

类似于@trnelson所说的,该值也可以是缓存并从'sessionStorage'重置(或者,在本例中为'localStorage')。 – 2014-10-31 16:53:52

回答

1

继承人的东西我会尝试,只是为了看看它是否能正常工作。我们会要求浏览器保持重置值直到其实际重置。它确实需要在任何设置值的脚本之后执行,所以也许jQuery的ready()函数比window.onload(可能已经被别的东西使用)更有用。不要忘记把它放在结尾</body>标记之前,以确保它的最后一件事正在执行或加载。

window.onload = function(){ 
    var resetValueInterval = setInterval(function(){ 
     order_poNumber = ""; 
     if(order_poNumber == ""){ 
      clearInterval(resetValueInterval); 
     } 
    },100); 
} 

你也可以代替检查是否设置,停止检查值的设置。这可能永远不会使用更多的资源,但它总是值得一试。当然,如果您减少每次迭代之间的时间量,它就会变得更合理。不是围绕问题最优雅的方式,但它可能有效。

window.onload = function(){ 
    var resetValueInterval = setInterval(function(){ 
     order_poNumber = ""; 
    },100); 
    document.getElementById(/* order_poNumber-dropdown-id */).addEventListener("mousedown", function(){ 
     clearInterval(resetValueInterval); 
    }, false); 
} 
+0

感谢您的建议。我试了一下,但没有运气。在尝试了很多事情之后,我确定重置/更改order_poNumber并不能完成我所需要的操作,即使它最终会被更改。 – Brett 2014-11-04 14:58:50

+0

答案接受,因为它是最有帮助的,一些建议的事情帮助我认识到,改变变量没有我期望的效果。 – Brett 2014-11-04 15:02:52

2

浏览器后退按钮的工作方式与初始页面加载不同。您可以使用jQuery的地址到侦听器添加到页面的变化(包括导航箭头的):

$.address.change(function(e) { 
    resetPO(); 
}); 

http://github.com/asual/jquery-address

+0

感谢您的建议,但它看起来像甚至让变量order_poNumber更改不能解决我遇到的问题,我想它会。 – Brett 2014-11-04 15:00:29