在科尔多瓦的文本字段显示错误

时间:2015-08-16 14:57:56

标签: javascript android css cordova meta

当我尝试在cordova中构建应用程序时显示我的应用程序出了点问题。这是代码:

    <html>
    <head>
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
        <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
        <title>Swaggity swag swag</title>
    </head>
    <body>

        <form action="res/link2.html">
            <input type="text" placeholder="Name" name="name">
            <input type="text" placeholder="Text" name="comment">
            <button type="submit">Leggo!</button>
        </form>

        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>

当我构建它时,显示的文本字段最终显示如下: http://imgur.com/ReOa9vk

我希望你能帮我解决这个问题,谢谢!

1 个答案:

答案 0 :(得分:1)

我将您的代码放在一个新的cordova应用程序(CLI版本5.1.1; Visual Studio 2015)中,并在输出控制台中出现一些安全错误,因为您引用了http://code.jquery.com。无论如何,你提供的截图看起来像是,某种方式加载了样式,但给出了奇怪的结果。 就我而言,我在Visual Studio的JavaScript控制台中遇到了以下错误:

Refused to load the stylesheet 'http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css' because it violates the following Content Security Policy directive: "style-src 'self' 'unsafe-inline'".

index.html (15,0)
Refused to load the script 'http://code.jquery.com/jquery-1.11.1.min.js' because it violates the following Content Security Policy directive: "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

index.html (0,0)
Refused to load the script 'http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js' because it violates the following Content Security Policy directive: "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

index.html (0,0)

为避免这些错误,我更改了Content-Security-Policy的元标记并添加了http://code.jquery.com

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com http://code.jquery.com; style-src 'self' 'unsafe-inline' http://code.jquery.com; media-src *">

通过这些改变,一切看起来都很好:

Code in ripple

由于安全策略,上述解决方案无法直接在iOS,Windows 8.1 / 10和Android平台上运行。

我认为有两种解决方案:

  1. 我建议下载脚本和样式表,然后在www文件夹下访问它们。
  2. 另一种方法是允许访问外部资源。为此你需要白名单插件: https://github.com/apache/cordova-plugin-whitelist ...并且您必须在Common-&gt; Domain Access-&gt; URI下编辑config.xml并添加http://code.jquery.com
  3. 这将在此文件中生成XML条目:

    <!-- Allow images, xhrs, etc. to http://code.jquery.com -->
    <access origin="http://code.jquery.com" />
    

    之后在Windows 10下看起来很好看,例如: Windows 10 screenshot

    希望有所帮助!