首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

【小游戏】怎么给外部引用的js文件传递参数

2012-09-17 
【小游戏】如何给外部引用的js文件传递参数。要求:1、兼容IE6 7 8、Firefox、chrome加分:1、第一次发布且完美实现

【小游戏】如何给外部引用的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"></script>



document.write('<script tpye="text/javascript" src="test.php?a=1&b=2""></script>");

这样不就可以了!
test.php

<?php
 header('content type:text/javascipt'); /通知浏览器是js文件
$a=$_GET['a']
$b=$_GET['b'];
echo '任何javascript';



[解决办法]

汗 还有别的方式吗?
<script language="javascript" src="xx.txt" id="sss"></script>
<script language="javascript">
var arg=1;
var ac=document.getElmentById("sss");
eval(ac.innerHTML+" var c="+arg)
</sctipt>
[解决办法]

探讨

引用:

大叔那也算啊?
那下面的岂不是也算?
JScript code

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


xx.txt
JScript code

alert(s);

请看我的第一个方案。。……

[解决办法]
其实变来变去道理都一样的,就是把外部参数传进去.加上eval()就更灵活了

test.html
-----------
HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD>  <TITLE> New Document </TITLE>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <!-- 没规定不能用jQuery -->  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>   <SCRIPT LANGUAGE="JavaScript"> <!--        $.ajax({ url: "test.txt", success: function(e){        eval(e)        say();    }}); //--> </SCRIPT> <script src="test.js"></script> </HEAD> <BODY>   </BODY></HTML>
[解决办法]
想了10多分钟实在想不出什么了,JS里的COOKIE,HASH,NAME全被说光了。还有13楼的总结,基本全用上了。只能说来个变体了,换成超级链接,看看能不能出点怪现象!
 <a href="test.js?a=5" id='dd'>333</a>
<script type="text/javascript" src="test.js"></script>

test.js
 
alert(document.getElementById("dd").href.match(/\ba=([^&]*)/)[1]);

热点排行