Internet Explorer 6/7/8.
Я использую вызовы eval (), чтобы обеспечить выполнение кода в контексте определенных фреймов многокадрового веб-сайта.
Ситуация, с которой я столкнулся, заключается в том, что я в основном передаю полное имя метода в FrameA в FrameB.Затем я хочу, чтобы FrameB выполнил указанный метод внутри FrameA - но из контекста FrameA.Это очень важно из-за ограничений внутри IE, которые в противном случае могут привести к ошибкам «освобожденного скрипта».См .: Невозможно выполнить код из освобожденного скрипта
FrameB использует eval для первого получения целевого объекта frame, а затем вызывает eval для результирующего объекта для выполнения метода, который находится внутриэтот кадр.Поэтому рассмотрим следующее, выполняющееся из FrameB:
eval("top.FrameA").eval("SomeMethod(1,2);");
Первый eval возвращает объект окна, но вызов второго eval всегда приводит к ошибке «ожидаемый объект».
Интересноприведенный выше код работает с внутри FrameA, но на самом деле он выполняется внутри FrameB с помощью следующего кода:
top.FrameB.eval("eval('top.FrameA').eval('SomeMethod(1,2);');");
Таким образом, проблема связана с вложениемeval высказывания.
Что мне здесь не хватает?