从Sencha Touch应用程序打开外部网站/地址

时间:2011-11-15 12:22:42

标签: javascript iphone url sencha-touch

我的应用程序中的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上的移动游戏中运行良好。但是,如果我将应用程序添加到主屏幕并运行它,那么它将不再有效。我收到“无法显示网址”的错误。

有没有人知道如何更改它以允许正确触发链接?

干杯

亚当

1 个答案:

答案 0 :(得分:0)

这是我在Sencha论坛上找到的东西,我不知道它是否有效,如果没有,请原谅。我们的想法是创建一个锚标记并模拟它的点击,而不是调用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