2013-06-21 10 views
5

Google Maps API v3を使用するjQuery + Phonegapを使用してモバイルウェブアプリを開発していますが、地図に添付されているリンクに問題があります。ポップアップウィンドウでGoogleマップのリンクを開くにはどうすればよいですか?

アップルのような物理的なボタンを持たないデバイスにぶつからないように、利用規約とGoogleマップのリンクを同じウィンドウで開くのではなく、ポップアップウィンドウで開くことができるかどうかです。私はマップキャンバスの子要素に「クリック」イベントを添付して、それらのターゲットを変更しようとしましたが、それを達成できませんでした。解決策はありますか?

ありがとうございました。

答えて

0

SOLVED!私はこの答えの解決策を見つけました:https://stackoverflow.com/a/16575541/2507996。 PhoneGap/Cordova InAppBrowserを使用して、クリックイベントをキャプチャして新しいウィンドウを開くリンク動作を変更します。すべてのあなたの答えに感謝します。

3

これらのリンクの両方にはtarget="_blank"があるため、通常は自動的に新しいウィンドウで開きます。たとえば、Googleマップのリンクは次のようになります。

<a target="_blank" 
    href="http://maps.google.com/maps?..." 
    title="Click to see this area on Google Maps" 
    style="position: static; overflow: visible; float: none; display: inline;" 
> 
    <div ...> 
     <img ...> 
    </div> 
</a> 

しかし、あなたがコメントで述べたようにPhoneGapのは、その動作をオーバーライドしているように見えます。実際には、あなたが検索する場合:

phonegap target _blank 

あなたはthis discussionthis issue特に、話題にかなりあります。

PhoneGapのInAppBrowserを使いたいと思っていますが、それは具体的にはwindow.open()機能に結び付けられているようです。したがって、これらの<a>要素のhrefを、簡易URLの代わりにwindow.open()呼び出しを使用するように変更するとよいでしょう。

あなたはlinkという変数のもの<a>要素の一つへの参照を得ている場合たとえば、あなたは試してみてください:

link.href = 
    "javascript:window.open('" + 
     link.href + 
    "', '_blank', 'location=yes');"; 

からhrefを変更します。

http://google.com/etc.etc. 

(実際にはすべて1行に表示され、読みやすくするためにここにフォーマットされています)。

javascript:window.open(
    'http://google.com/etc.etc.', 
    '_blank', 
    'location=yes' 
); 

this answerの技術は、<a>タグのrel="external"MainViewControllerの変更を使用している可能性があります。しかし、これは非難されており、同様の量のDOM要素による手間が必要です。

もう1つの考え...通常、これらのマップとToSリンクの内部動作については、利用規約違反とみなされる可能性があります。ただし、PhoneGapの問題に直面しても、これらのリンクの本来の意図をそのまま維持しているだけで、正しく動作しないことを簡単に主張できます。

+0

お返事ありがとうございます。私はそれに気付いたが、問題は、WebページがPhonegapを使用してネイティブアプリとしてパッケージ化されているので、すべてのページが同じウィンドウ内で開き、実際のネイティブアプリをシミュレートすることだ。だから私はポップアップなどでそれを開きたい。 – alvarofd

0

新しいタブで開くことあなたのwindow.locationので、これを試してみてください:

i.e: <a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a> 
0

ChildBrowserプラグインを使用してみてください。 ChildBrowserでタップをキャプチャして開くには、JavaScriptトリッキーを行う必要があるかもしれません。

関連する問題