Как узнать переменные из разных ... "пространств имен"? - PullRequest
0 голосов
/ 17 мая 2011

Как мне получить доступ к некоторой переменной, объявленной в другом месте, из внешнего файла javascript?

Предположим, в html-файле у меня есть следующее

<head>
 <script>
   var a = 'something';
 </script>
<head>
<body>
<iframe src="otherfile.html"/>
</body>

и внутри otherfile.html,в разделе у меня есть

alert(a);

Как я могу убедиться, что я получаю сообщение с предупреждением "что-то"?

Я думаю, что Google Adsense делает это, их код:

<script type="text/javascript"><!--
google_ad_client = "youdontneedtoknowthis";
google_ad_slot = "5404192644";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

Как сценарий в http://pagead2.googlesyndication.com/pagead/show_ads.js может знать эти переменные (например, google_ad_client)?

Ответы [ 3 ]

2 голосов
/ 17 мая 2011

Неважно.

Все <script> блоки на странице имеют одинаковый контекст и переменные.

1 голос
/ 17 мая 2011

когда переменная определена без var, говорят, что она существует в глобальной области видимости. Когда ваш JS загружен на вашу страницу, он знает о любых переменных, которые существуют в глобальном масштабе в то время. Итак, что Google делает, так это определяет некоторые переменные и затем загружает их во внешний скрипт.

0 голосов
/ 17 мая 2011

Сценарий может просто предполагать, что эти переменные будут установлены. Они должны быть, потому что они необходимы. Скрипт может проверить, не определены ли они, и изящно ли сбои (ничего не делать), когда это не так. Переменные не находятся в другом пространстве имен.

...