2009-10-23 191 views
1

虽然这个问题之前已经被询问和回答过,包括在这个网站上,我并没有设法解决我的问题。将变量传递给JS文件

我使用Masterpages和Javascript文件......每个人现在怎么样“刁钻” masterpages相对路径得到...

嗯,我使用称为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文件放在页面的底部,以加快速度)。

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

回答

3

不能从the script element definition on the W3C site申报的单个元素的src和内容

如果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> 
+0

啊哈!这就是... thx很多。看起来我很接近......但并不接近enuff。 – 2009-10-23 15:56:15

0

A)你可以声明Javascript资源的src属性和块内的信息。你需要做的是在src块之前在自己的块中声明清除

B)我完成将代码生成的URL传递给Javascript的方式在我的视图/ masterpage中我有一个脚本块声明附加到Window一个url阵列,这样的方法没有奇冲突打倒其他脚本的道路:

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

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

var img = window.url.clearImage; 

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