将变量传递给JS文件

时间:2009-10-23 15:47:34

标签: c# asp.net javascript

虽然之前已经提出并回答了这个问题,包括在本网站上,但我无法解决我的问题。

我正在使用Masterpages和Javascript文件......现在每个人都是如此“棘手”的主页获得相对路径......

好吧,我正在使用一个png修复程序:单元Png修复(相当不错,说实话......甚至比JQuery更好),这个修复需要使用一个名为clear.gif的小图像。 clear.gif文件的路径存储在JavaScript文件中的变量中。

然而,由于我使用的是Masterpages,我不能简单地打开JS文件并写一个静态路径......我想过。

我尝试的是:从JS文件中删除变量,并在外面声明它,但是在sabe Script块中。像这样:

 <!--[if lt IE 7]>
        <script src="<%= ResolveClientUrl("~/masterpages/js/unitpngfix.js") %>" type="text/javascript">
            var clear="<%= ResolveClientUrl("~/masterpages/img/clear.gif") %>";
        </script>
<![endif]-->

我甚至试图在网站的负责人中声明它。 (我将我的JS文件放在页面底部,以加快速度)。

不幸的是我的解决方案不起作用......这就是为什么我在这里做这个问题。 :(

2 个答案:

答案 0 :(得分:3)

您无法在单个元素中声明src和内容。

来自the script element definition on the W3C site

如果src具有URI值,则用户代理必须忽略该元素的内容并通过URI检索脚本

尝试将它们分开:

<script type="text/javascript">
    var clear="<%= ResolveClientUrl("~/masterpages/img/clear.gif") %>";
</script>
<script src="<%= ResolveClientUrl("~/masterpages/js/unitpngfix.js") %>" type="text/javascript"></script>

答案 1 :(得分:0)

A)您可以声明Javascript资源的src属性和块内的信息。你需要在src块

之前在它自己的块中声明clear

B)我完成将代码生成的URL传递给Javascript的方法是在我的视图/母版页中我有一个脚本块,它声明了一个附加到Window的url数组,这样就不会出现奇怪的冲突与其他脚本:

<script type="text/javascript">
   Window.url = {
       clearImage: '<%= ResolveClientUrl("~/masterpages/img/clear.gif") %>',
       otherUrl: '<%=ResolveClientUrl("~/other/file/...")%>'
   };
</script>

然后在您的实际脚本文件中,您可以通过

获取它
var img = window.url.clearImage;

它确实将脚本绑定到该特定视图,但我不认为这是一个可怕的事情。