Я использую jQuery для выполнения ajax-запроса, и все работает как положено. Но он оценивает сценарии не в том контексте.
У меня есть iframe (тот же домен, здесь нет проблем), и я пытаюсь заставить сценарии работать в контексте iframe вместо того, где был сделан запрос ajax - например. другой кадр.
Я подумал, что могу сказать ajax не оценивать сценарии, и я сам выполнил бы работу, чтобы оценить их в правильном контексте. Есть идеи или способы отключить автоматический eval?
Редактировать
Итак, я был несколько неправ относительно начального вопроса. Сценарии оцениваются не при загрузке, а при размещении содержимого в документе. Вы можете убедиться в этом, протестировав пример:
$('#some_element').html('<span>content</span><script>alert(window)</script>');
Теперь, когда вы делаете это из другого фрейма, оценка происходит в контексте того, куда вы звоните, а не в элементе, в который вы вставляете контент.
Я закончил настройку содержимого без использования jQuery, а затем нашел / проверил любые теги скрипта:
element.get(0).innerHTML = data;
element.find('script').each(function() {
otherWindow.eval(this.innerText);
});
Окончательное обновление
Я закончил тем, что отследил его до источника и переопределил оттуда ... ниже приведен coffeescript, но вы можете понять идею. Я решил переопределить его, потому что для моего использования это никогда не должно происходить в верхнем окне, но ожидается в содержимом iframe.
$.globalEval = (data) -> (iframeWindow.execScript || (data) -> iframeWindow["eval"].call(iframeWindow, data))(data) if (data && /\S/.test(data))