2

Vimeo ビデオの埋め込みを許可するために、"OpenAllWhitelistURLsInWebView" = "yes" を設定しています。しかし、私はそれを行ったので、ホワイトリストに登録されたアイテムのみを開き、それらを明らかに webview で開きます。webview ではなく、ホワイトリストに登録されていないすべてのアイテムを Safari ブラウザーで開く必要があります。これを達成する方法について何か考えはありますか?

コルドバ 1.7 | XCode 4.3.2 | Jquery 1.7.1 | JqueryMobile 1.1.0 | iOS 5.1

4

3 に答える 3

2

Cordovoa との違いは正確にはわかりませんが、PG 1.4.1 で作業しており、PhoneGap.plistにこの設定があります。

ここに画像の説明を入力

そして、これは私のAppDelegate.mにあります

- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];

    if([[url absoluteString] rangeOfString:@"vimeo.com"].length > 0 || [[url scheme] isEqualToString:@"file"]){
        return [self.viewController webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }

    [[UIApplication sharedApplication] openURL:url];
    return NO;
}

これは、 PG によって開かれた非常に単純なindex.htmlです。

<body>
   <a href="http://www.vimeo.com">Vimeo</a>
   <a href="http://www.google.com">Google</a>
</body>

vimeo リンクは webview 内で開かれ、google リンクは Safari で開かれます。

更新コルドバ 1.7

どうやら、shouldSTARTLoadWithRequest 関数は最新バージョンの PhoneGap/Cordova では呼び出されません (1.6.1 以降だと思います)。したがって、リンクを Safari 内で開きたい場合targetは、タグの属性を に設定する必要があります_blank。常にコードにアクセスできるとは限らないため、役立つスクリプトを次に示します。

<head>
    <script type="text/javascript" src="cordova-1.7.0.js"></script>
    <script>  
        document.onclick = checkLink;
        function checkLink(e) {
            var url = e.target.href;
            if(url.indexOf('vimeo.com') == -1){
                window.open(url,'_blank');
            }
        }
    </script>
</head>
<body>
    <a href="http://www.vimeo.com">Vimeo</a>
    <a href="http://www.google.com" target="_blank">Google</a>
</body>
于 2012-06-04T20:39:03.173 に答える
0

すでにそうしているはずですが、ここに投稿したので、そうではないと思います。

できることはshouldStartLoadWithRequest、AppDelegate.mファイルのメソッドをオーバーライドすることです。チェックしたい条件(vimeoを含むURLなど)を追加してtrueを返すか、falseを返すことができます。

    if ( [request.URL.absoluteString rangeOfString:@"vimeo.com"].location != NSNotFound) {
            return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}

    //open in Safari
    [[UIApplication sharedApplication]openURL:request.URL];
    return NO;
于 2012-05-31T20:38:59.900 に答える
0

だから私はコルドバ1.9を使用しています。少しデバッグした後、関数 shouldStartLoadWithRequest を AppDelegate.m ファイルではなく MainViewController.m ファイルに実装する必要があることがわかりました。これが、トリガーされない理由です。

これは、PhoneGap 1.4.1 から Cordova 1.9 に更新した後に発見されました。

于 2012-07-05T12:47:11.750 に答える