Выполнение <scripts>, загруженного через .ajax в определенном контексте - PullRequest
2 голосов
/ 12 июля 2011

У меня есть страница A с несколькими контейнерами, в каждый из которых я загружаю содержимое страницы B. Страница B состоит из некоторого HTML и Javascript в тегах <script>.

Теперь мне нужно настроить JSвстроенный в страницу B - пусть он знает узел DOM, в который он был загружен.

Обработка на стороне сервера с параметрами URL и т. д., к сожалению, не подходит.

Упрощенный пример - страница A:

<div id="container1"></div>
<div id="container2"></div>

<script type="text/javascript">
  $('#container1').load('pageB.html');
  $('#container2').load('pageB.html');
</script>

Страница B:

<p>Lorem ipsum</p>
<script type="text/javascript">
  (function(){
    alert('I have been embedded into container #???');
  })();
</script>

Я вижу два основных способа добиться этого:

  1. передать информацию со страницы A на страницу B
  2. чтобы скрипт на странице B сам определил свою позицию

Для 1 .: есть ли способ выполнить встроенный JS, загруженный через AJAX, в определенной привязке / изменить область действияthis на странице B?

Для 2 .: существует ли кросс-браузерный способ получения ссылки на текущий исполняемый узел <script>?Что-то вроде геккона document.currentScript?

1 Ответ

1 голос
/ 12 июля 2011

Попробуйте:

<p>Lorem ipsum</p>
<script type="text/javascript">
    (function($){
      var $container = $('script:last').parent();
      alert('I have been embedded into container #'+$container.attr('id'));
    })(jQuery);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...