2

SenchaTouch2とCordova2.3.0を使用してモバイルアプリを開発しています。(動的にロードされたHTMLからの)すべての外部リンクを新しいInAppBrowserに開くことができるようにしたいと思います。

target = "_ blank"を含むようにすべての外部リンクを変更せずにこれを実現する方法はありますか?

外部リンクのクリックをインターセプトし、InAppBrowserのwindow.openAPIを使用してそれらを開きたいと思います。私はiOSとAndroidの両方をターゲットにしているので、別々のコード(JavaとObjective-C)を避けるためにjavascriptソリューションの方が良いと思います。

ありがとう!

更新:私はこれを見つけました: https ://gist.github.com/4694032

これに関する唯一の問題は、アプリでjQueryを使用しないことです。この問題のためだけにそれを含めることは価値がありますか?

4

2 に答える 2

3
Ext.each(Ext.query('a'), function(el) {
    el = Ext.get(el);
    el.on('click', function(e) {
        e.preventDefault();
        console.log('clicked', el.getAttribute('href'));
    });
});
于 2013-02-02T23:01:38.370 に答える
1

regexpを使用して、「http」で始まるattributes(href)専用にこのイベントを追加することもできます。

Ext.Viewport.element.dom.addEventListener('click', function (e) {
    if (e.target.tagName !== 'A') {
        return;
    };

    var url = e.target.getAttribute('href');
    var containsHttp = new RegExp('http\\b'); 

    //if href value begins with 'http'
    if(containsHttp.test(url)) { 
        e.preventDefault();
        window.open(url, "_system"); // For iOS
        navigator.app.loadUrl(url, {openExternal: true}); //For Android
    }
    else {
        return;
    }
}, false);

次に、AndroidとiOS用に同時にビルドできます。

于 2013-12-17T23:08:40.957 に答える