我正在开发一个小部件。 它的代码是:
<script src="../test/js.js"></script>
我想将参数传递给这样的.js文件,因为我们传递了像查询字符串这样的参数。
<script src="../test/js.js?place=us&list=10"></script>.
这些是我的.js文件中的内容。
var _html = '<div id="FJ_TF_Cont" style="position: relative; padding: 0; margin: 0; border-width: 0px; width: 200px;">'
+ '<iframe width="210" height="640" src="../test/content.aspx" name="FJIframe" scrolling="no" frameborder="0" marginwidth="0" marginheight="0" style="width: 210px; border-width: 0px; z-index: 1;">'
+ '</iframe>'
+ '</div>';
document.write(_html);
请注意 iframe 中 src 的内容:
src="../test/content.aspx"
现在我想将js字符串中的这些参数传递给此 src 作为查询字符串。
最终的src应如下所示:
src="../test/content.aspx?place=us&list=0"
我需要帮助,因为我是js的新手。
答案 0 :(得分:4)
将参数传递给JS文件中的函数,而不是作为文件本身的查询字符串。
声明类似
的函数function doSomething(place, list) {
//do something with place
//do something with list
}
在其他JS中将其用作doSomething('us',10);
任何其他尝试做你打算做的事情都是被黑客攻击。虽然你可以实现它,但它不是设计的。见相关帖子 -
Get the query string on the called javascript file
Passing Querystring style parameters into Javascript file
普遍的共识是否定的,不能或不应该这样做。
-
几个月后,我了解了cache busting。这是脚本文件上查询参数的一个特殊用例。考虑将缓存设置为一年到期的情况。为了解决这个时间问题,更改HTML href中的查询参数并不一定意味着您已经更改了脚本的内容,但它确实具有突破一年缓存到期的附加副作用。
答案 1 :(得分:1)
我认为更好更简单的方法是添加一个带变量的额外脚本标记。如果你保持它非常简单,你可以按如下方式进行,但对于大量变量,我会创建一个包含所有变量的对象:
<script type="text/javascript">
var place="us";
var list=0
</script>
<script type="text/javascript" src=....></script>`.
如果你想在src中这样做,你有两个选择:
src
参数。这很难做到,因为脚本不知道自己的名字。特别是当您组合并最小化脚本时,脚本标记可能对脚本不可用,因此您无法真正做到这一点。我会放弃这个选项,虽然我看过有人不止一次尝试过。答案 2 :(得分:1)
使用PHP的一种可能解决方案就是这样。
在您已拥有的文件夹js.php
中创建一个js.js
文件并粘贴:
<?php
header('Content-type: text/javascript');
$string = ""; $i = 0;
foreach($_GET as $key => $value)
{
if($i == 0){
$string .= "?";
$string .= $key . '=' . $value;
$i++;
continue;
}
$string .= '&' . $key . '=' . $value;
};
echo "
var _html = '<div id=\"FJ_TF_Cont\" style=\"position: relative; padding: 0; margin: 0; border-width: 0px; width: 200px;\">'
+ '<iframe width=\"210\" height=\"640\" src=\"../test/content.aspx$string\" name=\"FJIframe\" scrolling=\"no\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" style=\"width: 210px; border-width: 0px; z-index: 1;\">'
+ '</iframe>'
+ '</div>';
document.write(_html);
";
?>
更改
<script src="../test/js.js?place=us&list=10"></script>
到
<script src="../test/js.php?place=us&list=10"></script>
它应该有用。
答案 3 :(得分:1)
我第二次@ goleztrol的回答。 这是一个较小的(单个脚本标签)版本
<script type="text/javascript">
var place="us";
var list=0;
var script_tag = document.createElement('script');
script_tag.setAttribute("type","text/javascript");
script_tag.setAttribute("src", "<your-js-src>");
document.getElementsByTagName('body')[0].appendChild(script_tag);
</script>
希望有所帮助:)
答案 4 :(得分:0)
您的服务器根据参数重写js,或者在脚本标记之前在javascript中设置一些预定义变量。
答案 5 :(得分:0)
简单来说:您希望在请求文件时使用查询参数的值更改javascript文件。当然,这是可能的。不幸的是,这只能通过一些服务器端处理来完成。
我无法建议/推荐任何服务器端,你需要自己解决这个问题。
一般的想法是: