Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用Javascript关闭Android浏览器?_Javascript_Android_Browser - Fatal编程技术网

是否可以使用Javascript关闭Android浏览器?

是否可以使用Javascript关闭Android浏览器?,javascript,android,browser,Javascript,Android,Browser,我想在网页中放置一个“关闭”按钮(我们的客户希望这样做) 当我点击这个按钮时,我想关闭浏览器(不是当前的选项卡,而是Android浏览器中的“浏览器”,例如Firefox,Chrome等) 我四处搜索,找到了一个方法:window.close(),但似乎只适用于IE。 我的问题是: 是否有任何方法可以使用Javascript关闭Android浏览器?这是不可能的,也永远不会。没有-这是一件好事:网页没有必要干扰浏览器本身(“等等,我的窗口到哪里去了?我有30个标签在那里-噗,没了!”),更不用说

我想在网页中放置一个“关闭”按钮(我们的客户希望这样做)
当我点击这个按钮时,我想关闭浏览器(不是当前的选项卡,而是Android浏览器中的“浏览器”,例如Firefox,Chrome等)

我四处搜索,找到了一个方法:
window.close()
,但似乎只适用于IE。
我的问题是:


是否有任何方法可以使用Javascript关闭Android浏览器?这是不可能的,也永远不会。

没有-这是一件好事:网页没有必要干扰浏览器本身(“等等,我的窗口到哪里去了?我有30个标签在那里-噗,没了!”),更不用说一个明显的漏洞:

  • 将XSS插入legitpage.example.com
  • 当它被激活时,在evipage.example.net下打开一个弹出窗口,看起来就像legitpage.example.com
  • 关闭legitpage.example.com(如果2和3足够快,用户可能会被xe仍在legitpage.example.com上的事实所愚弄)
  • 利润
    Android浏览器只允许JavaScript关闭弹出窗口。因此,除非窗口被创建为弹出窗口,否则无法关闭该窗口。

    好的,一个简单的解决方法是创建一个带有全屏WebView控件的活动,在其中显示HTML内容(本地或来自Internet),并添加一个按钮关闭此窗口,同时回调Java关闭此活动。以下是您需要的所有代码:

    browser.xml布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="#404040"
              android:id="@+id/mainLayout"
        >
        <WebView android:id="@+id/webkit"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:layout_marginBottom="2dp"
             android:layout_weight="1"
             android:scrollbars="vertical"
             android:visibility="visible"
            />
    
    </LinearLayout>
    
    在应用程序的其他位置启动此活动的代码为:

        Intent intent = new Intent(context, myBrowser.class);
        intent.putExtra("url", "http://www.someaddress.com/somepage.html");
        startActivity(intent);
    
    您的somepage.html网页可能会有一个带有以下代码的“关闭”按钮:

    <button onclick="JCB.finishActivity()">Close</button>
    
    此外,如果要显示来自Internet的内容,而不是WebView控件中的本地文件或字符串,请记住向AndroidManifest.xml添加必要的权限:

    <uses-permission android:name="android.permission.INTERNET" />
    
    
    
    Greg

    window.close()
    实际上适用于添加到主屏幕的Web应用程序(使用Chrome Beta)


    它干净地关闭应用程序并返回主屏幕。

    它只关闭当前页面/选项卡。不确定它是否会关闭移动浏览器上的标签,但它肯定会在标准浏览器上工作。你为什么要这样做?作为一个用户,我会立即讨厌任何试图关闭我的浏览器的网站。@Dunes是的,我也不想这样做。但是我的客户想要。在告诉他们不应该实现此功能之前。我想首先找出所有可能的答案:window.close();不起作用?不,不起作用:-/至少在Android浏览器上不起作用(注意,在Android上,会有其他意想不到的副作用:浏览器活动从堆栈中弹出,另一个活动变为活动)。对于添加到桌面的站点,这在Android 8.0.0(截至2018年12月3日更新)上仍然有效。谢谢+1.
    webView.loadUrl("javascript:functionName(params)");
    
    <uses-permission android:name="android.permission.INTERNET" />