jquery .load продолжает работать javascript после .remove - PullRequest
0 голосов
/ 09 июля 2020

Я делаю чат с простым javascript:

<script>
function chatClick(messages_other_user) {
    $('#chatBox').remove();
    document.body.innerHTML += "<div id='chatBox' class='chatDiv'></div>";
    $("#chatBox").load("subs/chat/chat.php?ou="+messages_other_user);
}
</script>

Эта функция вызывается в нескольких ссылках с изменением переменной messages_other_user.

В файле " chat. php "Я получил переменную" ou "и у меня есть сценарий, который записывает в консоль:

if (isset($_GET['ou'])) { $otherUserChat = $_GET['ou']; } else $otherUserChat = 0; // get $otherUserChat 

<script>
$(document).ready(function() {
    var chatUpdateVar = setInterval(function() {
        console.log("<?= $otherUserChat ?>");
    }, 2000);
    $.ajaxSetup({ cache: false });
});
</script>

Но строка .remove не совсем избавляет от javascript в чате. php файл. Когда я нажимаю ссылку для вызова функции javascript chatClick, она работает нормально. Но когда я затем нажимаю другую ссылку, которая вызывает chatClick с другой переменной для «messages_other_user», старая продолжает работать вместе с новой.

Как я могу полностью уничтожить старый javascript, чтобы он не бежать больше?

1 Ответ

0 голосов
/ 09 июля 2020

Я нашел решение - и я ошибся, назвав истинным виновником проблемы.

Я думал, что console.log даст тот же результат, что и я на самом деле - я просто решил заменить консолью .log в коде для простоты. Так что, я думаю, я понял, что это глупо. Я понял, что мне не нужно было использовать готовый документ, поэтому я просто делаю это прямо в своем скрипте:

var chatUpdateVar = setInterval(function() {
    $("#chatArea").load("subs/chat/chatContent.php?ou="+<?= $otherUserChat ?>);
    console.log("updated");
}, 4000); // CHECK FOR UNREAD: 1000 equals 1 second
$.ajaxSetup({ cache: false });

Чтобы закрыть окно чата, я теперь запускаю эту функцию:

function closeChat() {
    clearInterval(chatUpdateVar);
    $('#chatBox').remove();
}

И в файле, который вызывает вышеуказанный скрипт (chat. php), я проверяю, существует ли функция closeChat - и если да, я запускаю ее. Это часть звонка в чат. php:

function chatClick(messages_other_user) {
    if (typeof closeChat === "function") { 
        closeChat();
    }

    document.body.innerHTML += "<div id='chatBox' class='chatDiv'></div>";
    $("#chatBox").load("subs/chat/chat.php?ou="+messages_other_user);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...