2017-02-10 41 views
1

这个电子商务平台使用了大量的ajax。在后台订单部分有两种可能性:订单列表页和详细订单页。网址不会改变,如果它确实告诉我我在哪个网页,但它不是这样,那将很容易。聆听外部JavaScript文件中的变化变化

这个平台使用ajax为变量赋值一些值,在我的代码中我可以告诉这个值我在哪个页面中,我能做的最好的事情就是使用setInterval()来获取这个变量的变化。我讨厌使用setInterval(),所以我正在寻找替代品。

为什么我讨厌它?想象一下,在这个电子商务中使用我们“帮助”的客户端,并将其全天开放。在这种情况下,setInterval()是可恨的。

事情是,我没有任何控制在这个平台运行的外部JavaScript,所以我需要一种方式来使用某种监听器到这个变量。

我能找到的最好的是Akira's answer但我不能使用它,因为这个变量不在我的控制范围内。

这是我做过什么:

setInterval(function() {//get the variable from the source code of the platform; it changed? do stuff}, 1000); 

你知道一个更好的方式来做到这一点比的setInterval()?只是为了改进我的代码。 THX

编辑:这个变量是在脚本中,而不是在一个HTML元素

编辑2:this link是一定程度上比的setInterval(),基本上是一个改进的setInterval(更好的方法),因为你可以告诉他需要做多少次迭代,而且在客户端整天开放平台的情况下可以使用它,但是为了使用它,我需要一些东西来检测客户端在页面上做了些什么活动,我需要什么? ?听众soooo,回到原点

回答

0

SuperNovas's answer edited by alex是一两件事,我们可以工作来检测我们的网页上的活动和时间设置到的setInterval()。 是不是最清晰的答案,但它是一些东西,我标记线程已解决,直到有人给出更好的答案。 谢谢。

0

您可以尝试使用Vue.js框架。我用示例代码创建了jsfiddle。所以,Vue.js框架自动检查并更新变量。但是,它应该在“平台”对象中添加代码。所以它可能会工作或破坏一些功能。反正你可以尝试becouse所有你需要做的是写几行代码:-)

window.someObjectOfThePlatform = { 
     variable1:"Test", 
     updateVariable1:function(){ 
     this.variable1 = "New val " + Math.random(10);  
     } 
    }; 

    Vue.component('your-component', { 
     template:"<div>{{ variable1 }}</div>", 
     data:function(){ 
     /* all magic is here. The Vue framework automaticaly add 
      methods to look at variables and update values 
     */ 
     return window.someObjectOfThePlatform 
     }, 
     watch: { 
     // whenever variable1 changes, this function will run 
     variable1: function (newValue) { 
      console.log("variable1 updated"); 
     } 
    } 
    }); 

    var app = new Vue({ 
     el: '#app' 
    }); 
+0

抱歉,我们不能在我们的应用程序中使用Vue.js,只是简单的Javascript。 – iscato

+0

问题是我们无法访问该外部JavaScript代码,我们需要根据该变量的值来处理一些信息,我重复了JavaScript变量,而不是DOM中的元素 – iscato