2016-02-16 4 views
0

Я инъекционного немного кода в моем веб-сайте (другими словами, возвращаемое значение http://localhost/FibReactHello/#):Выполнить впрыскивается JavaScript в FireFox

<div id="reactAppEntryPoint"> 
    <script src="http://localhost/FibReactHello/scripts/bundle.js"></script> 
</div> 

Этот JS запускается и преобразуется в мое приложение реагирует, как я бы ожидаемый как в Chrome, так и в IE11. В Firefox JS не выполняется. Он просто сидит там, как удар по бревну. JS должен был создать некоторый HTML-код, создающий произвольный контент сайта.

Вот JQuery:

<div id="appEntrypt"> 
      <button onclick="alertMe(event);">Inject React into Boost</button> 
     </div> 

     <script> 
      function alertMe(e) {//crappy named function 
       //e.preventDefault(); 
       console.log('js works'); 
       var url = "http://localhost/FibReactHello/#"; 
       resetState(); 
       $.ajax({ 
        url: url, success: function (result) { 
         $("#appEntrypt").html(result); 
         write(result); 
        }, 
        async: true 
       }); 
       /* 
       $.get(url, function (data) { 
        $("#appEntrypt").html(data); 
        write(data); 
       });*/ 
       return null; 
      } 

      function write(data) { 
       console.log(data); 
      }; 

      function resetState() { 
       document.getElementById('appEntrypt').innerHTML = ""; 
      }; 
     </script> 
+0

что ответ от ' "HTTP: // локального/FibReactHello/#";'? – satin

ответ

0

Я изменил свой Ajax вызов DATATYPE 'сценария' в отличие от 'HTML'. Также указал прямо на мой файл bundle.js. Скрипт выполняется в Chrome и Firefox.

 $.ajax({ 
       url: devUrl, 
       success: function (result) { 
        console.log("successfully got script") 
       }, 
       error: function (xhr, status, errorThrown) { 
        var output = "Error: " + errorThrown + ' status: ' + status + ' statusText: ' + xhr.statusText 
        console.log("failed to get script: " + output); 
       }, 
       contentType: 'application/javascript',//IE 
       dataType: 'script', 
       cache: false,//required for IE 
       crossDomain: true,//required for IE 
      }); 

В IE это решило проблему захвата сценария. Но в моем случае моего bundle.js требовался polyfill, чтобы узнать, как IE запустить jabbascrept:

'Symbol' is undefined in IE after using babel

+0

Я думаю, что это больше связано с вашим 'url' чем' dataType'. Кроме того, 'async: true' в jQuery ajax является избыточным. По умолчанию это асинхронно. Кроме того, чтобы убедиться, что вы получаете правильный 'dataType', вы можете делать завиток -IL http: //localhost/FibReactHello/scripts/bundle.js | grep 'Content-Type'' и проверьте там «Content-type». – shriek

+0

@shriek Почему, по вашему мнению, проблема с URL-адресом? Я удалил асинхронную часть за ваш комментарий. –

+0

О, извините, что не следите за этим. Я совсем забыл об этом. Причина в том, что ваш предыдущий url был «http: // localhost/FibReactHello/#» вместо 'http: // localhost/FibReactHello/scripts/bundle.js', который был исправлен во второй попытке. Иногда, когда вы не нажимаете прямо на статические файлы (js/css), перед создателями api можно реализовать то, что «Content-type» должно быть доставлено. Один из способов убедиться в том, что вы скручиваете конечную точку и сами проверяете Content-type и видите ли вы правильный файл. – shriek

Смежные вопросы