当前位置: 首页 > 知识库问答 >
问题:

将外部URL加载到选项卡中?

臧翰采
2023-03-14

我有一个简单的应用程序,将加载托管的网页,我想显示在单独的选项卡面板。最干净的方法是什么?选项卡可以在用户点击每个选项卡时加载,或者在应用程序启动时一次加载所有选项卡。Sencha Touch没有办法简单地使html: value成为一个URL。我可以为每个选项卡添加一些页面加载事件吗?

[更新]

我添加了使用本地html文件进行测试的初始化:方法中的Ajax调用的建议。但是,所有选项卡都显示要完成的第一个Ajax结果。

此代码现已完全正常运行。我忘了:this.call家长(争论);

我把这个例子放在SenchaFiddle上,前两个选项卡不会加载,因为ajax调用失败,但是最后两个ComponentQuery可以工作。


下面是屏幕应该如何看的想法:

以下是基本观点:

Ext.define('SenchaFiddle.view.MainView', {
    extend: 'Ext.tab.Panel',

    config: {
        tabBarPosition:'bottom',
        layout: {
            type: 'card',
            animation: {
                duration: 300,
                easing: 'ease-in-out',
                type: 'slide',
                direction: 'left'
            }
        },
        fullscreen: true,

        items: [
            {
                title: 'Top Stories',
                iconCls: 'info',
                xtype: 'panel',
                items: [
                    {
                        title: 'Top Stories',
                        xtype: 'toolbar',
                        docked: 'top'
                    },
                    {
                        id: 'image-tab',
                        html: 'Loading top stories url...'
                    }
                ]
            },
            {
                title: 'Entertainment',
                iconCls: 'action',
                items: [
                    {
                        title: 'Entertainment',
                        xtype: 'toolbar',
                        docked: 'top'
                    },
                    {
                        id: 'news-tab',
                        html: 'Loading entertainment url...'
                    }
                ]
            },
            {
                id: 'tab3',
                title: 'Sports',
                iconCls: 'user'
            },
            {
                id: 'tab4',
                title: 'Science',
                iconCls: 'star'
            }
        ]
    },
    initialize: function() {
        console.log("View initialized");
        Ext.Ajax.request({
            url: 'bar.html', // you must have access to the server
            method: 'GET',
            callback: function(options, success, response) {
                console.log(response.responseText);
                Ext.ComponentQuery.query('#image-tab')[0].setHtml(response.responseText);
            }
        });

        Ext.Ajax.request({
            url: 'foo.html', // you must have access to the server
            method: 'GET',
            callback: function(options, success, response) {
                console.log(response.responseText);
                Ext.ComponentQuery.query('#news-tab')[0].setHtml(response.responseText);
            }
        });
        Ext.ComponentQuery.query('#tab3')[0].setHtml("boom");
        Ext.ComponentQuery.query('#tab4')[0].setHtml("bang");

        this.callParent(arguments);  // Don't forget this!
    }
});

foo.html

<p style="color: #00f;">
    foo
</p>

bar.html

<p style="color: #0f0;">
    bar
</p>

共有3个答案

尚楚
2023-03-14

更简单:

正常添加按钮,因为它将是一个选项卡。。。然后,在tabpanel config元素中,添加:

listeners: {
    activeitemchange: function(source, value, oldValue, eOpts) {
        if(value.id == 'chiama') {
                            // do actions...
            // for example open a link: 
                            // document.location = 'www.google.it';

            source.setActiveItem(oldValue); //avoid tab switching
            return false; // avoid tab switching
        }
    }
}
王英奕
2023-03-14

除非您正在加载大量的数据,如大量的图像视频音频等,否则我看不到这两种方法之间的任何区别,即当用户单击这些选项卡时加载或当应用程序启动时立即加载。

检查您正在这些选项卡中加载的数据,并进行相应的操作。

如果要在应用程序启动时加载数据,请使用initialize()方法。

齐昆
2023-03-14

尝试将其添加到视图(未测试):

Ext.Ajax.request({
    url: 'http://www.urlForTopStories', // you must have access to the server
    method: 'GET',
    callback: function(options, success, response) {
        Ext.ComponentQuery.query('#image-tab')[0].setHtml(response.responseText);
    }
});  

如果您有. htaccess文件中的urlForTopStory,则将其发送到服务器:

Header set Access-Control-Allow-Origin *
Header set Access-Control-Allow-Headers x-requested-with

如果您不在Apache上,请查看此CORS资源以获取更多帮助。

 类似资料:
  • 我试图使用axios将一个外部url加载到使用vuejs的div中,我得到了 CORS策略阻止了从origin访问在处的XMLHttpRequest:请求的资源上没有'Access-Control-Allow-Origin'标头。 我错过了什么? 堆栈跟踪: CORS策略阻止从来源“http://localhost:8080”访问位于“https://pay.stripe.com/receipts

  • 问题内容: 在使用库在JavaScript中绘制图表时,我还是一个新手。我刚刚开始尝试使用Chartjs,但一直无法使用getJson或其他任何方式加载我的json对象并替换标签和数据。我以前使用过HighCharts,相比之下,它非常简单。另外,我将如何将其放入Angular的指令中并显示出来。 https://jsfiddle.net/0u9Lpttx​​/1/ index.html data

  • 问题内容: 我有一个带有3个不同内容选项卡的Bootstrap“选项卡”导航。除了我要从选项卡导航之外链接到其中一个选项卡之外,它的工作原理都是完美的。这意味着当某人单击选项卡窗口外部的链接时,应将其设置为“活动”该选项卡并显示其内容。 现在,它正确显示了该选项卡的内容,但是该选项卡未设置为“活动”。我如何实现这一点,以使其像有人单击一样“活跃”? 这是代码: 非常感谢您的帮助或提示:) 问题答案

  • 当我像下面的例子一样点击选项卡2时,我如何将选项卡1 Neumorphic css翻译成选项卡2呢,就像从选项卡1滑到选项卡2一样? https://dribble.com/shots/10805627-neumorphic-tab

  • Main.java Controller1.java Controller2.java 谢谢你的忠告! 编辑:语法

  • 我有一个示例项目,设置如下: 其中“测试项目”依赖于“测试库”,而最后一个依赖于“纯Java库”,编译该项目并启动此设置工作正常。 我现在正在考虑导入以前的Eclipse工作区,并与Android studio一起工作,问题是项目设置不同,我希望保持这种方式。 我尝试了很多配置,但没有找到一种方法来引用父文件夹范围之外的项目(在示例中为'root')。 在许多平台/模块中,您可以使用“..”但这对