日期:2014-05-16  浏览次数:20390 次

【小游戏】如何给外部引用的js文件传递参数。
要求:
1、兼容IE6 7 8、Firefox、chrome

加分:
1、第一次发布且完美实现 +20分
2、第一次发布但实现有局限性 +10分
3、非第一次发布但完美实现 +10分
4、之前有发布的解决方案的变种 +5分

如果答案多适当会加分

我先发几个我所知道的解决方案
1、
HTML code
<script language="javascript">
var g = "I'm here";
</script>
<script tpye="text/javascript" src="test.js"></script>


test.js文件
JScript code
alert(g);

2、
HTML code

<script tpye="text/javascript" src="test.js?a=1&b=2" id="testjs"></script>


test.js文件
JScript code
var test = document.getElementById("testjs");
var src = test.getAttribute("src");
alert(src.substring(src.indexOf('?')+1));

方法二的一个变种
HTML code
<script tpye="text/javascript" src="test.js" data="a=1&b=2" id="testjs"></script>

test.js文件
JScript code

var test = document.getElementById("testjs");
alert(test.getAttribute("data"));


3、
HTML code
<script tpye="text/javascript" src="test.js">
 var temp = "just test";
</script>

test.js文件
JScript code
var script = document.getElementsByTagName("script");
eval(script[script.length-1].innerHTML);
alert(temp);


题外话:这样的做法看上去能解决些问题,但是事实上有一个不争的时候,就是增加了耦合度。双方需要有个规范。无论是变量名的定义,还是实现方式的限制。所以通常情况下可以考虑用其他的方法来绕过。

------解决方案--------------------
--test1.html--
HTML code
<script>
    document.cookie = "g=I'm here";
</script>
<script tpye="text/javascript" src="test1.js"></script>

------解决方案--------------------
--test2.html--
HTML code
<script>
    location.hash = "g=I'm here";
</script>
<script tpye="text/javascript" src="test2.js"></script>

------解决方案--------------------
--test3.html--
HTML code
<script>
    window.name = "g=I'm here";
</script>
<script tpye="text/javascript" src="test3.js"></script>

------解决方案--------------------
大叔那也算啊?
那下面的岂不是也算?
JScript code

<script>
var s = 1;
</script>
<script language="javascript" src="xx.txt"></script>

------解决方案--------------------
一般不赞成在外部js中直接调用或执行函数
一般全局变量可以任何地方调用。

如果实在要用,可以试试下这种方法。

<script tpye="text/javascript" src="test.php?a=1&b=2"></scr