我不确定说出这个的最佳方式,即使有可能。欢迎任何建议。
我们的网站上有一个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:)
答案 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();
这样一来,如果页面定义了一个函数,那么值就会被设置,如果没有,那么提交函数就会继续。