使用PhoneGap在Android的新浏览器窗口中打开网址

时间:2014-01-28 21:14:57

标签: android cordova

我正在开发一个应用程序,它从RSS提要(xml)获取数据,这意味着我无法控制它附带的内容,我正在使用Google Api for feeds来检索数据JSON格式,我正在使用jQuery(feeder.js)生成带有信息的结果html。

生成的html进入我的PhoneGap项目,一切正常。

现在唯一的问题是,在从RSS检索到的信息中,有时会有一些链接到达任何地方(例如:facebook,twitter,个人网站,报纸等)。

馈线提供元素内的所有内容,包含标题,段落,链接等。

我现在需要的是一种在文章中定位此链接的方法,并调用window.open事件,或者在外部浏览器中打开链接的任何工作。

feeder.js生成的html结构如下:

<article>
    <h2>Title</h2>
    <p>Content</p>
    <a href="http://facebook.com">This link here!</a>
    <p>More content</p>
</article>

正如你所看到的那样,没有类或id来定位单个元素,因为它们在这里显示为指向。

到目前为止,我正在使用最新版本的Android SDK和PhoneGap。

基本上我需要做的是定位元素&lt; a&gt;在&lt;文章&gt;并为他们提供新的浏览器窗口事件。

对任何需要一分钟帮助我的人致以最诚挚的问候,欢呼!

2 个答案:

答案 0 :(得分:3)

在这里和google进行了大量研究之后,我想出了以下内容。

除了我的应用程序中显示的内容外,还有一个带有onClick事件的后退按钮,我使用此按钮定义一个功能,并调用以文章内部链接为目标的事件。顺便说一句,按钮有一个#href属性。

执行此操作后,我通过&#34; attr&#34;添加了onClick事件,之后将href属性保留为#。

脚本如下:

   function button(){
        var button = $(location).attr('href');
        button = button+'#';
        $('#articles a').each(function(){

              if(this != button){
                    $(this).attr("onClick", "navigator.app.loadUrl('"+this+"', { openExternal:true });");
                    $(this).attr("href", "#");  
                }
            });
    }

在onClick中,我调用了用于打开新浏览器窗口的事件,在我的phonegap版本中是&#34; navigator.app.loadUrl&#34;

现在每当html加载RSS提要内容时,它内部会显示一些链接显示:

  

&LT; a onclick =&#34; navigator.app.loadUrl(&#39; https://google.com/&#39;,{openExternal:true});&#34;&gt;链接&lt; / A&GT;

这将打开一个对话框,用户可以在其中选择他想要使用的浏览器。

再次感谢那些不厌其烦地回答我的问题!

答案 1 :(得分:0)

如果您使用Jquery,您可以使用此功能:

<script> 
   $(document).on('click', 'a', function(e) {
      if ($(this).attr('target') !== '_blank') {
         e.preventDefault();
         window.location = $(this).attr('href');
      } 
   });
</script>

如果您在应用中使用jQuery Mobile,请务必在rel="external"标记中添加<a>。 希望它有所帮助,询问是否有什么不起作用。快乐的编码!