не может открыть скрипт по нажатию кнопки - PullRequest
0 голосов
/ 05 октября 2018

У меня длинный вывод скриптового веб-пакета, давайте назовем его bla.js
В моем основном html-файле я пытаюсь открыть bla.js по нажатию кнопки.Вот как я пытался это сделать:

<body>                    
    <button class="btn-start" type="button" onclick="clickHandler()"></button>            
    <script>
        function clickHandler(){
            var script = document.createElement("script");
            script.type = "text/javascript";
            script.src = "scrs/bla.js";
            document.head.appendChild(script);
        }
    </script>
</body>

но при нажатии кнопки ничего не происходит, хотя на вкладке приложения инструментов разработчика Google Chrome я вижу, что добавляется скрипт bla.js!

И когда я делаю это так:

<body>                    
    <button class="btn-start" type="button" onclick="window.location.href='run_bla.html';">
    </button>            
</body>

, а в run_bla.html:

<body>                    
    <script src='scrs/bla.js'></script>     
</body>

все работает отлично!единственная проблема заключается во втором способе, в конце URL будет /run_bla.html, а я этого не хочу.

Так что же не так с первым способом?Как открыть скрипт без изменения URL сайта?есть идеи в чем проблема?Я застрял на некоторое время с этим ...

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Ваш код в порядке, поэтому у вас, вероятно, есть ошибка в сценарии bla.js, которая не позволяет увидеть ожидаемое поведение.

Это можно увидеть в следующем коде: jQuery библиотеказагружается динамически и также выполняется (т. е. определено).

function loadJQuery(){
  console.log("clickHandler called");
  console.log(typeof $ !== 'undefined'); // false
  
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "https://code.jquery.com/jquery-3.3.1.min.js";
  script.onload = function() {
    script.onload = null;
    onJQueryLoad();
  }
  document.head.appendChild(script);
}

function onJQueryLoad() {
	console.log("onScriptLoad called");
  console.log(typeof $ !== 'undefined'); // true
}
<button id="btn" class="btn-start" type="button" onclick="loadJQuery()">click me</button>
0 голосов
/ 05 октября 2018

Вы создали свой объект сценария (хранится в переменной script), но не добавили его в документ.

Вы можете добавить его в элемент HTML с помощью функции appendChildв элементе, например:

function clickHandler(){
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "scrs/bla.js";
    document.head.appendChild(script);
}

Это добавит ваш скрипт к тегу в документе.

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