【问题标题】:Jquery does not work in hybrid android but works in webJquery 在混合 android 中不起作用,但在 web 中起作用
【发布时间】:2015-04-26 12:04:36
【问题描述】:

我尝试在我的混合应用程序中使其工作,但它不想运行,有人知道它为什么不工作吗?

jQuery().ready(function () {

        $("#b4all_about").bind('click', function (e) {
            //alert();
            $("#tbb4all_about").removeClass("b4DisplayNone").addClass("b4DisplayBlock");
            $("#tbb4all_works").removeClass("b4DisplayBlock").addClass("b4DisplayNone");
            $("#tbb4all_join").removeClass("b4DisplayBlock").addClass("b4DisplayNone");
        });
        $("#b4all_works").bind('click', function (e) {
            $("#tbb4all_about").removeClass("b4DisplayBlock").addClass("b4DisplayNone");
            $("#tbb4all_works").removeClass("b4DisplayNone").addClass("b4DisplayBlock");
            $("#tbb4all_join").removeClass("b4DisplayBlock").addClass("b4DisplayNone");
        });
        $("#b4all_join").bind('click', function (e) {
            `enter code here`$("#tbb4all_about").removeClass("b4DisplayBlock").addClass("b4DisplayNone");
            $("#tbb4all_works").removeClass("b4DisplayBlock").addClass("b4DisplayNone");
            $("#tbb4all_join").removeClass("b4DisplayNone").addClass("b4DisplayBlock");
        });
});

我的 MainActivity 看起来像:

WebView web = new WebView(this);
SetContentView(web);
web.Settings.JavaScriptEnabled = true;
web.AddJavascriptInterface(new JS2CS(this), "JS2CS");
web.LoadUrl(mobile2.security.key.content);

按钮如下:

<div style="width: 100%; align-items: center">
   <div class="sGeneral" id="b4all_about">About us</div>
   <div class="sGeneral" id="b4all_works">How it works</div>
   <div class="sGeneral" id="b4all_join">Join us</div>
</div>

隐藏的 div 是这样的:

 <table>
    <tr>
        <td>
            <div id="tbb4all_about" class="b4DisplayNone">1</div>
            <div id="tbb4all_works" class="b4DisplayNone">2</div>
            <div id="tbb4all_join" class="b4DisplayBlock">3</div>
        </td>
    </tr>
</table>

事情可能是个问题,但我不确定它是一个 Web 应用程序,但使用普通 jquery 作为:

<script src="js/jquery-2.1.1.min.js"></script>
<script src="js/jquery-ui-1.10.4.js" type="text/javascript"></script>
<link href="css/ui-lightness/jquery-ui-1.10.4.min.css" rel="stylesheet" />
<link href="css/ui-lightness/jquery-ui-1.10.4.css" rel="stylesheet" />

谢谢你的好建议)

-----更新----- 我检查了 Xamarin 中的日志并看到了这个:

E/eglCodecCommon(2140): **** 错误未知类型 0x65080020 (glSizeof,73) “Uncaught SyntaxError: Unexpected token http://192.168.0.16:8081/home.aspx/js/jquery-2.1.1.min.js(3) 我/铬(2140):[信息:控制台(3)]“未捕获的语法错误:意外的令牌http://192.168.0.16:8081/home.aspx/js/jquery-2.1.1.min.js(3) “Uncaught SyntaxError: Unexpected token http://192.168.0.16:8081/home.aspx/js/jquery-ui-1.10.4.js(3) “未捕获的 ReferenceError:$ 未定义”,来源:http://192.168.0.16:8081/home.aspx/ (53) I/chromium(2140):[INFO:CONSOLE(3)]“未捕获的语法错误:意外的令牌 http://192.168.0.16:8081/home.aspx/js/jquery-ui-1.10.4.js(3)

不知道为什么它会尝试像这样加载 js 脚本,我应该如何将 jquery 包含到客户端?

我找到了它不加载的原因,我在我的网页中包含了我加载到混合 android 应用程序中的内容,这没有加载好。 我是否应该将这些包含到应用程序中是否有对 jquery 包含的其他引用。

我的 jQuery 是这样的:

<script src="/js/jquery-2.1.1.min.js"></script>
<script src="/js/jquery-ui-1.10.4.js" type="text/javascript"></script>
<link href="/css/ui-lightness/jquery-ui-1.10.4.min.css" rel="stylesheet" />
<link href="/css/ui-lightness/jquery-ui-1.10.4.css" rel="stylesheet" />

【问题讨论】:

  • 我想我看到了问题,Xamarin 试图对 js 文件做一些奇怪的事情,我在我的日志中看到了这个

标签: android jquery xamarin hybrid


【解决方案1】:

试试这个

WebView wb = new WebView(this);
    wb.getSettings().setJavaScriptEnabled(true);
    wb.getSettings().setDomStorageEnabled(true);
    wb.getSettings().setAllowFileAccessFromFileURLs(true);
    wb.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

将上述功能添加到您的 webView。 它可能有效,我没有测试它。

【讨论】:

    【解决方案2】:

    它工作正常。尝试执行它。

    我的问题是 Https。当我在 xamarin.android 中使用 http 时,它会抛出上述错误。但在 https 上工作正常。

    <html>
    <body>
        <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
        <h1>HybridWebView Test</h1>
        <br />
        Enter name: <input type="text" id="name">
        <br />
        <br />
        <button type="button" onclick="javascript: invokeCSCode($('#name').val());">Invoke C# Code</button>
        <br />
        <p id="result">Result:</p>
        <script type="text/javascript">
            function log(str) {
                $('#result').text($('#result').text() + " " + str);
            }
    
            function invokeCSCode(data) {
                try {
                    log("Sending Data:" + data);
                    invokeCSharpAction(data);
                }
                catch (err) {
                    log(err);
                }
            }
        </script>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      相关资源
      最近更新 更多