2011-05-24 55 views
1

我根據這個網站建設bookmarlet:http://www.latentmotion.com/how-to-create-a-jquery-bookmarklet/如何通過一個變量在javascript

這是bookmarlet的代碼:

javascript:(function(){ 
    var head=document.getElementsByTagName('head')0], 
     script=document.createElement('script'); 
    script.type='text/javascript'; 
    script.src='http://myserver.com/bookmarlet-remote.js?' + Math.floor(Math.random()*99999); 
    head.appendChild(script); 
})(); 
void 0 

我怎樣才能從bookmarlet傳遞變量(以上代碼),到bookmarlet-remote.js?

我試過後var myNewvar ='myValue',沒有成功,任何想法?

+1

儘量不使用VAR創建變量。 – 2011-05-24 16:11:15

回答

5

頁面上的所有JS代碼(包括小書籤代碼和腳本)都可以訪問全局範圍。如果您定義了一個不帶前綴var的變量,它將可用於所有其他腳本。

明確這一點可能是一個好主意。做window.myVar = "foo";清楚地表明你正在使用全局變量。

0

你會創建一個公共變量。

window.rnd = Math.floor(Math.random()*99999); 

在bookmarlet-remote.js中,您只需訪問該變量。

+0

因爲他編寫的代碼位於函數體內,所以將「var」放在此處。 – 2011-05-24 16:15:33

+0

是...看到我的錯誤,並在我看到您的評論之前將其更正。 – ic3b3rg 2011-05-24 16:17:33

1

在函數中使用var使其成爲本地函數。爲了讓全球的,你必須把它添加到window的範圍,所以:

window.newVariable = window.newVariable || 'Your new value here'; 

OR

window['newVariable'] = 'Your new value here'; 
+0

第一個選項可以防止覆蓋變量,如果您已經定義了它,第二個選項會將它添加到全局範圍中可用的變量集合中。 ||您想要|| || – 2011-05-24 16:17:03

+0

||不| |。 ||是OR,|是按位OR,這是完全不同的 – Matt 2011-05-24 16:18:21

+0

此外,它需要'window'而不是'Window'。 – ic3b3rg 2011-05-24 16:20:18

相關問題