- Вы не можете правильно избежать кавычек.
ExternalInterface.call()
ожидает выполнения оператора javascript - вы передаете определение функции, но не вызываете ее. Как уже предлагалось, добавьте ()
в конец, чтобы вызвать переданную функцию.
Полагаю, я правильно избежал кавычек. Попробуйте и дайте мне знать, что происходит.
var js:String = "function () { ";
js += "location.href=\"";
js += "javascript:A14nH=location.href;";
js += "L3f7 = \"http://www.google.com\";";
js += "R1Gh7 = \"http://www.google.com\";";
js += "if(L3f7&&R1Gh7){ ";
js += "Fr4Q= \\\"";
js += "<frameset cols='*,*'><frame src='\\\" + L3f7 + \\\"'/>\\\"; ";
js += "Fr4Q+=\\\"<frame src='\\\" + R1Gh7 + \\\"'/>\\\"; ";
js += "Fr4Q+=\\\"</frameset>\\\"; ";
js += "with(document){write(Fr4Q);void(close())} ";
js += "}else{void(null);} "
js += "\"} ()";
var divExists:Boolean = ExternalInterface.call(js);
Если вы пройдете
"alert('something');"
до ExternalInterface.call
, он выполнит его, и вы получите предупреждение. Но если вы пройдете
"function(){alert('something');}"
он просто создает анонимную функцию. Чтобы вызвать функцию, вы должны добавить к ней ()
как в
"function(){alert('something');}()"
Это то же самое, что создать именованную функцию и вызвать ее следующим образом:
function test(){alert('something');}
test();
Вы можете даже передать параметры таким образом:
"function(text){alert('Got ' + text);('taDaa!!')}"