gpt4 book ai didi

javascript - 如何将 Css/JQuery 文件应用到 Android WebView 中的外部页面

转载 作者:行者123 更新时间:2023-11-28 08:50:44 25 4
gpt4 key购买 nike

不确定我的想法是否可行,但为什么是现在。

我有一个 MVC4 母版页如下

<head runat="server">
<meta charset="utf-8" />
<title>RYTE HCMS</title>
<meta name="viewport" content="width=device-width" />
<link href="<%: Url.Content("~/favicon.ico") %>" rel="shortcut icon" type="image/x-icon" />
<link rel="stylesheet" href="~/Content/jquery/jquery.mobile.theme-1.4.3.min.css" />
<link rel="stylesheet" href="~/Content/jquery/jquery.mobile.icons.min.css" />
<link href="~/Content/jquery-ui.datepicker.min.css" rel="stylesheet" />
<link href="~/Content/jquery.mobile.structure-1.4.5.min.css" rel="stylesheet" />
<%: Scripts.Render("~/bundles/modernizr") %>
<style type="text/css">
.wrap {
white-space: normal !important;
}
</style>
</head>
<body>
<div data-role="page" data-theme="a" data-url="master-page" id="master-page">
<div data-role="header" data-position="fixed">
<asp:ContentPlaceHolder ID="Header" runat="server">
<a href="#leftpanel" data-panelid="leftpanel" data-icon="bars" data-role="link" style="height: 17px"></a>
<h1>
<asp:ContentPlaceHolder ID="TitleContent" runat="server" />
</h1>
<% Html.RenderPartial("LoginUserControl"); %>
</asp:ContentPlaceHolder>
</div>
<div data-role="content">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
</div>
<script src="<%=Url.Content("~/Scripts/jquery-1.11.1.min.js")%>"></script>
<script>
$(document).on("mobileinit", function () {
$.mobile.ajaxEnabled = false;
});
</script>
<script src="<%=Url.Content("~/Scripts/jquery.mobile-1.4.5.min.js")%>"></script>
<script type="text/javascript">
$(document).on("pageinit", "#master-page", function () {
$(document).on("swipeleft swiperight", "#master-page", function (e) {
// We check if there is no open panel on the page because otherwise
// a swipe to close the left panel would also open the right panel (and v.v.).
// We do this by checking the data that the framework stores on the page element (panel: open).
if ($.mobile.activePage.jqmData("panel") !== "open") {
if (e.type === "swipeleft") {
$("#right-panel").panel("open");
} else if (e.type === "swiperight") {
$("#leftpanel").panel("open");
}
}
});
});
</script>
<asp:ContentPlaceHolder ID="ScriptsSection" runat="server" />
</body>

我想在 Android WebView 中加载和应用 CSS/JQuery。我想将文件保留在 android 移动应用程序中,并在页面加载到 webView 时应用它们。

如果我不按特定顺序加载这些文件,设计就会中断。我这样做的原因是为了确保用户不会觉得它是一个网络应用程序。目前在每次刷新/重新加载时,jquery mobile 和 css 加载大约需要 1-2 秒。

既然MVC4页面是在远程服务器上编译的,有可能吗?

最佳答案

好的,所以对您问题的评论基本上总结了它。您需要将 js/css 代码添加到您的 Assets 文件中。

如果想看例子的话,可以看看这个sample project(我只加载js代码,css也是一样的原理) here

回顾一下总体思路:

  • 让您的 webview 使用自定义 WebViewClient(在示例中称为 MailWebViewClient)。您不需要自定义 webview(如示例中所做的那样)wv.setWebViewClient(webViewClient);
  • 在您的 webview 客户端中,覆盖 onPageFinished() 方法并在字符串 (src) 中加载您的 javascript 代码 view.loadUrl("javascript: "+ src);
  • 就是这样。它应该工作正常

    在示例中,我正在加载一个脚本,该脚本将调整所有表格和图像的大小以适应 web View (Android 的常见要求)。还有一些随意的 linkify 代码(用于识别和标记链接)。我不会使用 js 代码,因为它有点错误,但它是原理的一个很好的例子。

    关于javascript - 如何将 Css/JQuery 文件应用到 Android WebView 中的外部页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27356447/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com