【问题标题】:A working method to open a webpage in new window?在新窗口中打开网页的工作方法?
【发布时间】:2012-06-18 03:13:00
【问题描述】:

我一直在尝试在 sencha touch 中编写代码,它有一个按钮,当我点击它时,它应该会在新窗口中以弹出窗口的形式打开一个网页。

  1. Window.open()-我不能使用这个方法,因为它不能正常工作 在电话中。虽然我意识到这是打开新的最简单的方法 浏览器窗口。

  2. document.location.href=url - 此方法以相同的方式打开 URL
    page ,但我希望它以弹出窗口的形式在新窗口中打开。

当用户单击按钮时,有没有其他方法可以在新窗口中打开页面,下面是我的代码

Ext.application({
    name: 'Opening new page',

    launch: function() {
        Ext.create("Ext.tab.Panel", {
            fullscreen: false,
            items: [
                {
                    xtype: 'button',
                    text: 'click to open google',
                    ui: 'confirm',
                    handler: function() {
                        document.location.href=("http://www.google.com/");
                    }
                }
            ]
        });
    }
});

【问题讨论】:

  • 为什么不使用 Ext.window ?
  • 你能给我一个在按钮事件中使用 Ext.window 的好例子吗?

标签: javascript extjs sencha-touch-2 new-window


【解决方案1】:

在您的处理程序中使用 window.open(),如下所述:

handler: function() { 
    window.open("http://www.google.com/", "_blank"); 
}

【讨论】:

    【解决方案2】:

    在您的工作页面中创建一个弹出窗口(一个简单的窗口)并将其可见性设置为 false.. 当您单击按钮时,将其可见性更改为 true 并为其提供焦点.. 您也可以在该弹出窗口中打开任何内容..

    或者你可以使用这个 jQuery 代码

    $(document).ready(function() { tb_show(title, "testpage.aspx?id=" + url + "&TB_iframe=true&width=700&height=600", null); });
    

    在这里你可以传递你想要的参数。这将作为一个新的弹出窗口打开。

    【讨论】:

    • 第一个(创建一个弹出窗口并将其可见性设置为 false)将起作用。我对此很确定..但我不知道第二个想法是否可行。
    【解决方案3】:

    嘿@coding 你可以,这是一个 Overlay 是一个弹出类型,在处理程序事件中试试这个,

    var overlay = new Ext.Panel({
        floating : true,
        modal : true,
        centered : true,
        width : 500,
        height : 500,
        styleHtmlContent : true,
        html: '<div><iframe style="width:100%;height:100%;" src="http://www.sencha.com/products/touch">Your device does not support iframes.</iframe></div>',
    }).show('pop', true)
    

    请动动脑筋,我不会做你的功课。我希望这有帮助。 :) Ciao

    【讨论】:

    • 它不起作用@hekomobile! :(。我仍然没有找到更好的解决这个简单问题的方法!希望我能尽快得到一个
    • 告诉我你是怎么做的。我不知道
    • {items:[{xtype: 'button',text: '点击打开', handler:function() { var overlay = new Ext.Panel({ floating : true,modal:true,居中:true,宽度:500,高度:500,styleHtmlContent:true,html:'google.com',项目:[],}).show('pop',true); } }]});}});
    • 嘿@codingactive 我更新了我的答案,请动动脑筋。
    【解决方案4】:

    我不确切知道如何在 Ext.js 中执行此操作,但我的想法基本上与 @bunlong-van 相同。创建一个以新窗口为目标的锚标记,将其添加到页面中,然后单击它。

    这就是在 jQuery 中的实现方式:

      $('button').bind('click',function(e){
          var $me = $(this);
          e.preventDefault();
          e.stopPropagation();
          $('<a />')
            .attr('href', $me.data('href'))
            .attr('target', '_blank')
            .css({display:'none'})
            .appendTo($('body'))
            .get(0).click();
      });
    

    完整示例:http://jsbin.com/adakur/edit

    【讨论】:

      【解决方案5】:

      请试试这个代码:

      handler: function() {
        var link = Ext.getDom('hidden_link');
        link.href = 'http://www.google.com'/;
        var clickevent = document.createEvent('Event');
        clickevent.initEvent('click', true, false);
        link.dispatchEvent(clickevent);
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 2014-03-24
      相关资源
      最近更新 更多