2011-11-15 40 views
0

我定义为我的应用程序中的ListPanel如下:打开外部网站/地址从煎茶触摸应用

  //Create List View Using ListStore Created in data.js 
      SpotiPod.listPanel = new Ext.List({ 
       id: 'artistList', 
       store: SpotiPod.ListStore, 
       itemTpl: '<div>{ArtistName}</div>', 
       grouped: true, 
       indexBar: true, 
       listeners: { 
        itemtap: function(list, index){ 
         var rec = list.store.getAt(index) 
         //Ext.Msg.alert(rec.get('ArtistName'), 'Load In Spotify?', function(){location.href = rec.get('SpotifyURI');}); 
         Ext.Msg.show({ 
          title: rec.get('ArtistName'), 
          msg: 'Load In Spotify?', 
          buttons: Ext.MessageBox.YESNO, 
          fn: showSpotify 
          }); 
         function showSpotify(btn){ 
          if(btn == 'yes'){ 
           window.open(rec.get('SpotifyURI')); 
          } 
         } 
        } 
       } 
      }); 

的应用呈现艺术家的名单,并应使用Spotify的URI的,当提供一个链接到他们你点击是加载Spotify它应该打开应用程序并显示艺术家。下面的应用程序在iPhone上的浏览器和移动Safari浏览器中工作正常。但是,如果我将应用程序添加到主屏幕并运行它,那么它不再有效。我收到一个错误消息,“URL无法显示”。

有没有人有任何想法可以改变这种方式来让链接正确地被解雇?

干杯

亚当

+0

什么ü通过将应用程序添加到主屏幕是什么意思? – heyjii

+0

正如我在移动Safari浏览器中的web应用程序的地址,即mydomain.com/mywebapp并运行链接以从此处发现将会工作并打开Spotify应用程序并加载正确的信息。如果我选择“添加到主屏幕”并将应用程序放置在我的跳板上,则停止工作。 –

回答

0

这里是我的煎茶论坛发现,我不知道,如果它这样原谅我,如果它没有。这个想法是创建一个锚点标记并模拟点击而不是调用window.open()方法。这是从sencha post发布的代码。

Ext.util.openLink = function(href) { 
    var link = document.createElement('a'); 
    link.setAttribute('href', href); 
    link.setAttribute('target','_blank'); 
    var clickevent = document.createEvent('Event'); 
    clickevent.initEvent('click', true, false); 
    link.dispatchEvent(clickevent); 
return false; 
} 

http://www.sencha.com/forum/showthread.php?130358-window.open()-from-toolbar-button-opens-window-from-list-item-a-new-tab&p=639938#post639938