2013-11-15 260 views
0

這是我的小代碼片斷,用於將請求消息發送到服務器並獲取響應並進行打印。這是一個Chrome插件,但事情是,如果任何onClick操作將在瀏覽器上發生,那麼它將獲取url並且必須發送到另一個JavaScript文件,然後這個JavaScript文件負責將url發送到node.js服務器將一個變量從一個JavaScript文件傳遞到另一個JavaScript文件

的url.js(其中劫掠點擊URL)文件:

$(document).click(function (e) { 

    if ($(e.target).closest('a').length) { 
     // I want this url variable to be transferred from here to the below 
     // JavaScript file 
     var url = $(e.target).closest('a').attr('href'); 
    } else { 
     alert('You did not click a link'); 
    } 
}); 

和其他JavaScript文件,該文件採用的參數爲:

window.WebSocket = window.WebSocket || window.MozWebSocket; 
var connection = new WebSocket('ws://localhost:1337'); 

connection.onopen = function() { 
    connection.send(url); 
    connection.send("http://static.adzerk.net/Advertisers/bd294ce7ff4c43b6aad4aa4169fb819b.jpg"); 
}; 

connection.onerror = function (error) { 
    alert("something went wrong with your server " + error); 
}; 

connection.onclose = function() { 
    alert("server had shut down now "); 
}; 

connection.onmessage = function (message) { 

    try { 
     var json = JSON.parse(message.data); 
    } catch (e) { 
     console.log('This doesn\'t look like a valid JSON: ', message.data); 
     return; 
    } 
    if (json.type === 'message') { 

     addMessage(json.data.text); 

    } else { 
     console.log('Hmm..., I\'ve never seen JSON like this: ', json); 
    } 
}; 

function addMessage(message) { 

    var rec_object = message; 
    var regexp1 = /[\/a-zA-Z]+(.jpg)/; 
    var regexp2 = /[\/a-zA-Z]+(.mp3)/; 
    var regexp3 = /[\/a-zA-Z]+(.mp4)/; 
    if (regexp1.test(rec_object)) { 
     document.write("<img width=\"300\" height=\"250\" src=\"" + rec_object + "\" \/>") 
     document.write("<br /><br /><br /><br /><br /><br /><br /><br />"); 
    } else 
    if (regexp2.test(rec_object)) { 
     document.write("<audio controls>"); 
     document.write("<source src=\"" + rec_object + "\"type=audio\/mpeg \/>"); 
     document.write("</audio>"); 
     document.write("<br /><br /><br /><br /><br /><br /><br /><br />"); 
    } else 
    if (regexp3.test(rec_object)) { 
     document.write("<video width=\"300\" height=\"250\" controls>") 
     document.write("<source src=\"" + rec_object + "\"type=video\/mp4 \/>"); 
     document.write("</video>"); 
    } else 
     document.write(rec_object); 

} 

因此,如何能我做使用查詢字符串?我只想將它從一個文件發送到另一個文件。我像上面那樣試過,但是我沒有得到任何東西。

+0

請在發貼之前至少[美化](http://jsbeautifier.org/)您的代碼...;) –

回答

0

代替如下:

var url = $(e.target).closest('a').attr('href'); 

使用全局變量:

window.url = $(e.target).closest('a').attr('href'); 

然後,在你的其他文件還,使用connection.send(window.url)。這會讓你走,但閱讀下面。

說明::使用全局變量是非常糟糕的做法。理想情況下,我會重構您的代碼,以創建一個Connection對象,該對象的名稱爲url,該屬性在回調中實例化,然後您可以簡單地調用任何要調用的方法。它的所有方法都可以與局部變量url一起使用。

+0

該怎麼辦?我其實是關於我的項目,我今天必須提交4。我試過了上面給出的代碼,但現在它的顯示瀏覽器如「undefined」 – Suresh

+0

因此,這是一項家庭作業?我突然懷疑你沒有寫代碼的其他部分,因爲他們需要大量的Javascript理解。哎呀,你正在使用'window.WebSocket'。你一定明白'window'代表什麼,不是嗎? – Chandranshu

+0

不,先生這不是我從過去10天試圖 – Suresh

相關問題