寻找一种在添加到页面时编辑JavaScript文件的方法

时间:2014-04-04 15:55:57

标签: javascript

我不确定说出这个的最佳方式,即使有可能。欢迎任何建议。

我们的网站上有一个JavaScript文件,它创建一个Object,在Object上设置值,并调用Object上的方法来提交值。此JavaScript已添加到我们网站上的所有页面中。我遇到的问题是网站上的每个页面都需要在Object上设置一些自己的值。

以下是JavaScript文件的示例:

<javascript>
    Object obj;
    obj.setVal1 = 1;
    obj.setVal2 = 2;
    obj.submitValues;
</javascript>

目前,页面只是在页面的某处添加一个JavaScript代码,试图向对象添加更多值:

<javascript>
    obj.setCustVal1 = 1;
    obj.setCustVal2 = 2;
</javascript>

问题是,有时JavaScript文件会在自定义值有机会添加到Object之前加载和触发。 老实说,我不确定这些价值观是如何进入这一呼吁的,尽管他们肯定会这样做。我已大大过度简化了这一点 - 例如,使用document.write或类似的东西将JavaScript文件添加到页面中。所以它比我在这里写的更多,我只是想让它易于理解 所以我正在寻找一种方法,页面所有者可以从他的页面中将一些值插入到这个JavaScript文件中。 页面所有者是否可以在页面顶部添加一些JavaScript文件在加载时搜索的内容,并将其找到的内容添加到该JavaScript文件中的某个占位符中?这就是我在不知道是否可能的情况下解决它的方法。 我不是JavaScript专家,我只是想帮助提出一个解决方案。我有点被拉进这里,所以我希望在可能的情况下得到一些帮助。

我意识到这可能是一个复杂的答案 - 所以请随意告诉我去研究&#39; x&#39; - 我愿意这样做,我只是不知道从哪里开始。我的母语是PL / SQL,而不是JavaScript:)

2 个答案:

答案 0 :(得分:2)

也许你可以刷它们的顺序。并使它成为这样的东西。

<script>
var customVars = {};
 customVars.var1 = 1;
 customVars.var2 = 2; 
</script>

然后加载你的主脚本,这将做类似的事情:

<javascript>
    Object obj;
    obj.setVal1 = 1;
    obj.setVal2 = 2;
    obj.customValues = customVars; 
    obj.submitValues;
</javascript>

答案 1 :(得分:2)

进行提交调用以检查页面是否已定义函数,如果是,则将obj传递给执行函数。然后该函数将添加其值,然后返回。提交将继续进行。页面脚本必须放在包含的js文件之前。

页面上的脚本

<script>
  function customValues(obj){
     obj.custVal1 = 1;
     obj.custVal2 = 2;
  }
</script>
<script type="text/javascript" src="js.file"></script>

在你的js文件中

 //wherever your submitValues function is
 function submitValues(){
    if(window.customValues){
       window.customValues(this);
    }
    ...
    //do the submit
 }
 ...
 Object obj;
 obj.setVal1 = 1;
 obj.setVal2 = 2;
 obj.submitValues();

这样一来,如果页面定义了一个函数,那么值就会被设置,如果没有,那么提交函数就会继续。