LINUX.ORG.RU

Почему не видно текста JavaScript скрипта после загрузки?

 


0

1

Доработал пример динамической загрузки JavaScript вот отсюда:

https://developer.mozilla.org/ru/docs/Web/API/HTMLScriptElement

Получил такой код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru">
<head>

<script type="text/javascript">

var scriptData;

function loadError (oError) {
  throw new URIError("The script " + oError.target.src + " is not accessible.");
}


function onLoadScript () {
  console.log("Script info after load");
  console.log(scriptData.src);
  console.log(scriptData.text);
  
  alert("You read this alert because the script has been correctly loaded.");
}


function importScript (sSrc, fOnload) {

  var oScript = document.createElement("script");
  oScript.type = "text\/javascript";
  oScript.onerror = loadError;
  
  if (fOnload) { 
    oScript.onload = fOnload; 
  }
  
  document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
  oScript.src = sSrc;
  
  console.log("Script info");
  console.log(oScript.src);
  console.log(oScript.text);
  
  return oScript;
}


scriptData=importScript("http://www.google-analytics.com/ga.js", onLoadScript);
    

</script>

</head>
<body>
Hello!
</body>
</html>


В логе браузера вижу следующий вывод:

"Script info"
"http://www.google-analytics.com/ga.js"
""
"Script load success"
"Script info after load"
"http://www.google-analytics.com/ga.js"
""


Вопрос. Почему не выдается текст скрипта объекта HTMLScriptElement (свойство text равно "") даже после успешной загрузки?

★★★★★

По тем же причинам, что и в твоем соседнем треде. JSONP из-за этого и существует.

zz ★★★★
()

Предупреждая твою следующую идею: если ты импортируешь img с чужого сайта и отрисуешь его на canvas, то ты не сможешь прочитать данные с этого canvas.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

а канвас отрисовывает только уже загруженную картинку. Фактически, оно отображает лишь объект картинки, который уже и так загружен и существует. Какой смысл читать оттуда что-то, если там ничего нет, в любом случае. Или, в каком смысле «прочитать»

quest2017
()
Ответ на: комментарий от quest2017

Если ты загрузишь изображение со своего сайта (или с другого, если разрешено CORS) и отрисуешь его на canvas, то ты можешь его попиксельно обрабатывать.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Да, попробовал, действительно не получается. Только не понятно, откуда это ограничение, и зачем оно нужно. Ведь работает canvas с копией изображения, которая загружена в браузер. Тут, вроде, все и так безопасно.

quest2017
()

Скрипт в другом домене, это какая-нибудь безопасность. В консоли браузера нет ошибок?

amomymous ★★★
()
Ответ на: комментарий от quest2017

Ведь работает canvas с копией изображения, которая загружена в браузер.

Которая может содержать личные данные пользователя с другого сайта. Владелец сайта с canvas'ом не должен иметь доступа к данным пользователя браузера на других сайтах.

proud_anon ★★★★★
()
Последнее исправление: proud_anon (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.