簡體   English   中英

將變量從一個javascript文件傳遞到另一個javascript文件

[英]pass a variable from one javascript file to another javascript file

這是我的小代碼段,用於將請求消息發送到服務器,並獲取響應並進行打印。 這是一個Chrome插件,但問題是,如果在瀏覽器上發生任何onClick操作,則它將抓取該網址並必須發送到另一個JavaScript文件,然后此JavaScript文件負責將網址發送到node.js服務器

url.js(在點擊時獲取網址)文件是:

$(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);

}

那么,如何在不使用查詢字符串的情況下做到這一點呢? 我只想將其從一個文件發送到另一個文件。 我像上面一樣嘗試過,但是什么也沒得到。

代替以下內容:

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

使用全局變量:

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

然后,在另一個文件中,也使用connection.send(window.url) 這將帶您前進,但請閱讀以下內容。

注意:使用全局變量是非常不好的做法。 理想情況下,我將對代碼進行重組,以創建一個名為urlConnection對象,該對象從回調中實例化,然后您可以簡單地調用任何要在其上調用的方法。 它的所有方法都可以使用局部變量url

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM