Как выполнить скрипт на клике - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь создать повара ie только тогда, когда посетитель нажимает кнопку Accept, но не может заставить скрипт выполняться при нажатии. Вот мой код:

function myFunction(){
    var scripts = document.getElementsByTagName("script");
    for (s of scripts) {
        if (s.type == "text/plain") {
            s.setAttribute('type', 'text/javascript');
            eval(s);
        }
    }
}
<head>
    # Some other scripts and title

    <script type="text/plain">
        document.cookie = "username=John Doe";
        alert();
    </script>

</head>

<body>
    <button href="javascript:void(0);" onclick="myFunction();">
        Accept
    </button>
</body>

Когда я нажимаю на кнопку, я вижу, что тип сценария изменяется с text/plain на text/javascript, но я этого не сделал выполнить сценарий после этого, даже с eval() (после проверки файлов cookie приложения новый повар ie не создается, поэтому я предполагаю, что он не был выполнен).

Я видел некоторые другие решения StackOverflow, но они включали размещение содержимого скрипта, который я хочу выполнить в myFunction(), и я не хочу этого делать (если это возможно).

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 16 апреля 2020
var scripts = document.getElementsByTagName("script");
for (s of scripts) {
    if (s.type == "text/plain") {
        //s.setAttribute('type', 'text/javascript');
        eval(s);
    }
}

eval(s) здесь не имеет смысла, s не содержит JavaScript код в текстовом виде, это ссылка на элемент DOM.

eval(s.innerText) оценит содержимое вашего элемента скрипта.

(И вам также не нужно изменять его тип, потому что сам элемент скрипта не участвует в выполнении какого-либо более того, он просто предоставляет «данные».)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...