передать переменную из одного файла JavaScript в другой файл JavaScript

0

Это мой небольшой фрагмент кода, чтобы отправить сообщение запроса на сервер и вернуть ответ и распечатать его. Это дополнение к Chrome, но дело в том, что если в браузере будут выполняться какие-либо операции onClick, тогда он захватит URL-адрес и отправит его в другой файл JavaScript, тогда этот файл JavaScript отвечает за отправку url на сервер node.js

url.js (который захватывает файл url on click):

$(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
    Пожалуйста, хотя бы украсьте свой код перед публикацией ...;)
Теги:

1 ответ

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"
  • 0
    Итак, это домашнее задание? Я неожиданно подозреваю, что вы не написали и другие части кода, потому что им нужно много понимания Javascript. Черт возьми, вы используете window.WebSocket . Вы точно понимаете, что представляет собой window , не так ли?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню