StageWebView Отсутствие URL-адресов с target = "_ blank" - PullRequest
3 голосов
/ 20 января 2012

Есть ли какое-либо решение для StageWebView.loadURL (), как я могу обрабатывать URL-адреса на страницах HTML, которые имеют target = "_ blank"?

Это мобильное приложение для Android. (TabbedViewApplication)

Надеюсь, что кто-то может помочь.

Thx

Ответы [ 5 ]

1 голос
/ 24 января 2014

Один из вариантов - StageWebViewBridge.

StageWebViewBridge - это расширенная версия flash.media.StageWebView.

  • Расширяет метод loadString для связи AS3 - JS.
-Extends Bitmap class, you can modify his x,y,alpha,rotation,visible, etc ( Version 1 Beta )
-Communicates Actionscript with Javascript.
-Communicates Javascript with Actionscript.
-Load local files and resources in a easy way.
-Extends loadString method with AS3 - JS communication.
-Extends loadString method to load local resources.
-Lets you take an SnapShot to use as the bitmapData of the bitmap.

Источник StageWebViewBridge: https://code.google.com/p/stagewebviewbridge/

0 голосов
/ 03 февраля 2012

Поскольку это было объявлено как официальная ошибка, владелец Adobe QA Sanjay C. добавил комментарий: «Возможность воспроизвести проблему с приложенным проектом. Отправка в IRB».

Итак, надеюсь, что следующая сборкаисправит это.

С наилучшими пожеланиями

0 голосов
/ 21 января 2012

ОК, поэтому единственное решение этой проблемы, которое я смог найти, - это загрузить страницу (содержащую ссылки) в виде строки с URLLoader и заменить ее указанные части.Наконец, загрузка его с помощью StageWebView.loadString() метода.

Проблемы возникают, когда Сайт динамический и содержит JavaScript.Я также заменил некоторые относительные ссылки на абсолютные пути.

Вот и все ... но я очень надеюсь, что Adobe позволяет загружать эти ссылки "_blank" с помощью метода StageWebView.loadURL().

0 голосов
/ 25 января 2012

Если вы хотите захватить, когда пользователь нажимает на ссылку внутри вашего StageWebView, добавьте прослушиватель событий для события изменения местоположения (LocationChangeEvent).

Это LocationChangeEvent будет включать в себя URL-адрес, на который они собираются и нацелены. Затем вы можете запретить загрузку URL-адреса, позволить ему продолжить (ничего не делая) или обработать его любым другим способом, включая загрузку другого URL-адреса.

Если вы хотите загрузить другой URL, сначала остановите загрузку с помощью stageWebView.stop (). Вы также должны вызвать event.preventDefault (). Затем вы можете попытаться

Примечание: есть другое событие locationChange, которое может быть полезным.

0 голосов
/ 20 января 2012

Я никогда не работал с StageWebView, но знаю, что он действительно ограничен.При использовании HTMLLoader вы можете установить собственный экземпляр HTMLHost, который указывает использовать текущий HTMLLoader при открытии в _blankТем не менее, я не думаю, что это возможно с StageWebView.

public class MyHTMLHost extends HTMLHost
{   
    public function MyHTMLHost(defaultBehaviors:Boolean=false)
    {
        super(defaultBehaviors);
    }

    override public function createWindow(windowCreateOptions:HTMLWindowCreateOptions):HTMLLoader
    {
        // all JS calls and HREFs to open a new window should use the existing window
        return htmlLoader;
    }
}
...