имеют ли включенные файлы javascript доступ к глобальным переменным в родительском документе? - PullRequest
3 голосов
/ 24 августа 2009

Представьте себе некоторый код, похожий на этот:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
  <HTML>
  <HEAD>
  <TITLE>BLAH</TITLE>
  <script language='Javascript' type='text/javascript'>
  var ScriptVersionReqd='1.0';
  </script>

  <script language='JavaScript' type='text/javascript' src='clientscript.js'></script>
  etc. etc.

Есть ли у clientcript.js доступ к переменной "ScriptVersionReqd"?Если нет, то почему нет?

Ответы [ 3 ]

8 голосов
/ 24 августа 2009

Да.

Пока глобальная переменная помещена в глобальную область, прежде чем она вызывается внешним скриптом.

Изменить в ответ на комментарий: См. здесь для хорошего объяснения области видимости переменной javascript.

2 голосов
/ 24 августа 2009

Да. Вы можете увидеть примеры этого в таких вещах, как Google Adsense. В Adsense вы сначала начинаете с определения ширины, цветов и т. Д. Затем включаете скрипт, который ищет эти переменные и определяет выходные данные на основе этих значений.

<script type="text/javascript"><!--
  google_ad_client = "pub-42235573";
  google_ad_slot = "0774868545";
  google_ad_width = 728;
  google_ad_height = 90;
  //-->
</script>
<script type="text/javascript" 
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
1 голос
/ 24 августа 2009

Да, для области нет разницы, включен ли сценарий из файла или встроен в тег сценария.

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