2009-10-23 221 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; 

它得到它將腳本綁定到特定的視圖,但我不認爲這是一件可怕的事情。