Собсвтвенно загружаю сайт в пределах него ссылки все работают, но перейти по ссылке которая ссылается на другой домен не выходит, в чем может быть дело ?
вот код
package{ import flash.display.Sprite; import flash.html.HTMLLoader; import flash.net.URLRequest; public class Main extends Sprite { public function Main():void { var html:HTMLLoader = new HTMLLoader(); var urlReq:URLRequest = new URLRequest("http://yandex.ru/"); html.htmlHost = new NewHTMLHost; html.width = stage.stageWidth; html.height = stage.stageHeight; html.load(urlReq); addChild(html); } } }
Kavis
StageWebView - упрощенный вариант HTMLLoader с ограниченным взаимодействием между AS3 и JavaScript. Некоторые устройства не поддерживают HTMLLoader, а для поддержки StageWebView используют системные модули.
sanych_dv,
Решил я все таки использовать StageWebView, и побоыстрому переписал NewHTMLHost в NewStageWebView.as
Но компилятор ругается
D:\ProektS\Android\site_for_Android\com\my\NewStageWebView.as, строка 10 1016: Базовый класс является окончательным.
D:\ProektS\Android\site_for_Android\com\my\NewStageWebView.as, строка 17 1020: Метод, который помечен на переопределение, должен переопределять другой метод.
private var urlLoader:URLLoader; private var webView:StageWebView; // ... // создаем URLLoader и webView urlLoader = new URLLoader; urlLoader.addEventListener(Event.COMPLETE, onURLLoaderComplete); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onUrlLoaderIOError); urlLoad("http://yandex.ru/yandsearch?text=flash&lr=76"); webView = new StageWebView; webView.stage = this.stage; webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); webView.addEventListener(Event.COMPLETE, onWebViewComplete); webView.addEventListener(Event.LOCATION_CHANGE, onLocationChange); webView.addEventListener(ErrorEvent.ERROR, onWebViewError); private function urlLoad(urlString:String):void { urlLoader.load(new URLRequest (urlString) ); } private function onURLLoaderComplete(e:Event):void { // получаем HTML в строку var str:String = URLLoader(e.currentTarget).data; // парсим HTML на предмет ссылок с target=_blank и переписываем на _self (или удаляем таргеты) // к примеру.... var myPattern:RegExp = /target="_blank"/gi; str = str.replace(myPattern, 'target="_self"'); // Создаем webView и загружаем в webView поправленный HTML webView.loadString(str); } private function onWebViewComplete(e:Event):void { //trace( StageWebView(e.currentTarget).title ) } private function onLocationChange(e:Event):void { // location бывает странным :)) trace(e.currentTarget.location); // по ссылке загружаем новый url через UrlLoader urlLoad ("http:" + e.currentTarget.location) } private function onUrlLoaderIOError(e:IOErrorEvent):void { trace(e.errorID, e.text); } private function onWebViewError(e:ErrorEvent):void { trace(e.errorID, e.text); }
sanych_dv ,
Не прокатил этот код, у яндекса кнопка не работает, и ошибки идут в отладку, похоже в HTML стирается что-то еще, я вот думаю может можно, как то отследить, что нажали по ссылке, которая открывается в новом окне и загрузить эту ссылку через stageWebView.loadURL, но тут даже если пытаться просто ссылку выдернуть, и то не получается, LocationChangeEvent не реагирует на ссылки которые в новом окне.....