如何在cordova中动态加载CSS

2024-04-29

我正在尝试通过 xhr 请求在 cordova 中动态加载 CSS。

CSS 的加载不是问题,我可以通过 xhr 加载它并通过 HTML5 文件 API 将其存储到文件系统。然后我就可以得到一个完美的 URL。

但是如果我通过 javascript 在标头中创建一个新的链接元素,如下所示:

<link rel="stylesheet" type="text/css" id="skin" href="cdvfile://localhost/temporary/mydomin.tdl/skin.css">

你的样式表没有任何效果,我如何强制cordova考虑样式表?


*更新:我有一个可行的解决方案,我会将其添加到下面的答案中*

我发现了这个问题,不幸的是建议的答案没有解决它。

通过 XHR 请求从外部 PHP 脚本加载 CSS 数据(因为我的 CSS 数据对于每个页面都是动态的),我使用:

var storeCSSURL = "https://www.example.com/dynamicCSS.php?storeID=x";
$('head').append('<link rel="stylesheet" href="' + storeCSSURL + '" type="text/css" />');

我还尝试用新的 URL 替换现有的样式表链接;并向其添加日期时间戳以防止缓存,但这也不起作用。

在网络浏览器中工作得很好,我知道数据是通过 XHR 请求加载的,并且也应用于 head CSS 标签,尽管它在 Cordova / Phone Gap 中不起作用......应用程序只是不更新CSS 源自 PHP 脚本。

* 新更新 *

我终于想出了一个可行的解决方案,它有点像黑客,因为它不能直接解决问题;但可以解决它并且非常适合我的需求。

在 PhoneGap / Cordova 中,我使用 pageInit.js 类型场景从 PHP 脚本动态加载网页,我想大多数人都以某种类似的方式使用它。

页面加载后我添加了:

$("body").append('<style id="dynamicStyles"></style>');

然后简单地对动态 CSS (PHP) 文件执行 $.POST 请求,该文件返回所有动态样式数据;然后我将其加载到样式标签中。

这看起来像这样:

$.post("https://www.example.com/controller.php", { url: url }, function (data, status) {
    if (status == "success") {
        $("body").html(data);
        // Loads the main page content into the body tag
        $("body").append('<style id="dynamicStyles"></style>');
        // Appends the main page content with a style tag
        $.post("https://www.example.com/dynamicCSS.php", { storeID: storeID }, function (data, status) {
            if (status == "success") {
                $("#dynamicStyles").html(data);
                // Loads CSS data from external PHP script dynamically
                // then places it into the new style tag.
            }
        });
    }
});

CSS 从这一行更新:

$("#dynamicStyles").html(data);

这会将所有新的动态样式数据加载到样式标签中;因此,结果是页面上的样式定义,您可以在任何阶段使用 CSS 数据从外部 PHP 中使用 .html() 替换样式。

Phonegap / Cordova 可以识别样式标签的更改并相应地更新视觉效果:-)

我确信您可以将您的项目设置为以这种方式加载所有 CSS 数据,而不是普通的 head CSS 链接;使用 Phone Gap / Cordova 时,您永远不会遇到烦人的 CSS 缓存问题。

我希望这对某人有用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在cordova中动态加载CSS 的相关文章

  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 将 iPad xib 转换为 iPhone xib

    我看过很多关于将 iPhone xib 转换为 iPad xib 的帖子和教程 但我想反过来做 我能找到的唯一资源是 将 iPad 应用程序转换为 iPhone https stackoverflow com questions 68550
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 诊断和仪器均缺少“僵尸”选项

    运行 Xcode 4 0 2 Zombie 选项丢失 其他 SO 帖子建议找到它的两个地方 Product gt Run looks like this Product gt Profile looks like this 奇怪的是 我之前
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 在 HTML 下拉列表中有一个滚动条

    我正在寻找一种在 HTML 的下拉列表中添加滚动条的方法 这样如果下拉列表包含的内容超过例如 5 项 将出现滚动条以查看其余项 这是因为我将被迫列出一些大清单 过去几个小时我一直在谷歌上搜索它 但没有运气 它需要适用于 IE8 FF 和 C
  • 在 Shopify 商店中嵌入 Vue 组件

    在产品页面中 我尝试显示自定义 Vue 组件 为简洁起见 该组件根据给定的产品 ID 显示 Firebase 数据库中的一些信息 我最初尝试将其制作为 Shopify 应用程序 以便我可以访问他们的 API 我实现了 OAuth 并且可以检
  • Phonegap Build 与 Xcode4 上的 Phonegap 对比?配置.xml?

    有一个使用phonegap构建的应用程序 我已经使用它编译和测试了http build phonegap com http build phonegap com服务 我发现它使用 XCode 的构建方式与在 Phonegap 网站上的构建方
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 如何在 UITableView 的 switch 语句中创建变量?

    我正在构建一个包含三个部分的 tableView 我已经完成了前两个工作 但最后一个有点阻力 我的问题似乎涉及尝试在 switch 语句中声明变量 实际上是嵌套的 switch 语句 据我所知 这不是一个好主意 但在这种情况下 这似乎是唯一
  • HTML 锚点,禁用样式

    我有一些 html 锚链接代码 与文档的其余部分不同 我希望它看起来不是链接 有没有一种简单的方法可以禁用由于将文本包装在锚标记中而引起的样式更改 而不必强行使其相同 即 如果我更改正文字体样式 我不必也更改其他一些 link东西 将颜色设
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points

随机推荐

  • 项目未出现在“gcloud 项目列表”中

    我在 Google Cloud 控制台中添加了一个项目 但使用 gcloud SDK gcloud 项目列表 未显示该项目 我是在做一些愚蠢的事情还是我错过了什么 Edit 您是否为新帐户使用不同的凭据 否 该帐户是在控制台和sdk控制台上
  • 用户在对话框中输入

    python 中是否有任何库可用于图形用户输入 我知道关于tk但我相信需要一些代码才能做到这一点 我正在寻找最短的解决方案 a input Enter your string here 取而代之的是 我想要一个对话框 以便用户可以在那里输入
  • 什么是好的规格? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 中的一项乔尔测试 http www joelonsoftware com articles fog0000000043 html是一个
  • 如何在 SSRS 中将多个值传递给多值参数

    我将通过过度简化报告结构来尽力解释这个问题 第一份报告包含 1 个名为 资源中心 的组 然后在其下包含一行总计 总计实际上是一个组 但分组是在 SQL 中完成的 并显示在详细信息组中 该报告看起来像这样 Report 1 ResourceC
  • 清除 Laravel 队列缓存而不重新启动

    在我的应用程序中 每个客户都有一种复杂的类 我们在其中为该特定客户进行一些搜索和替换 我运行队列工作人员每天与 eBay 同步 以便每个客户进行某种搜索和替换 问题是 Laravel 队列会缓存代码很长一段时间 如果我想去更改任何客户类文件
  • 如何使用 Javascript 更改具有相同类名的多个元素?

    跟进至我之前的问题 https stackoverflow com q 42389937 2803565 我想使用 JS 使用按钮来显示 隐藏具有相同类名的多个元素 但似乎我只能更改具有特定类名的第一个元素 并且页面上具有相同类名的所有其他
  • Android - 如何创建布局选择器(如 ImageButton 选择器)

    我有一个 ImageButton 和一个包裹该按钮的 LinearLayout 如下所示
  • Rxjava 中“背压”一词是什么意思?

    我是 RxJava 的初学者 我很好奇 背压 这是否意味着生产者在背后给消费者施压 或者这是否意味着消费者正在向生产者施加压力 反方向施压 RxJava 背压 当你有一个 observable 发射物品的速度太快 以至于消费者无法跟上流量
  • 循环遍历类为“blah”的所有元素并找到最高的 id 值

    我有很多元素 例如 div class blah div 我想循环遍历所有这些并获得最高的 ID 即 123 这个怎么做 以下是正确的和最好的方法吗 blah each function var id this attr id split
  • 在 Windows 应用商店应用程序中进行模拟

    我可能不是第一个出于测试目的而在 Windows 商店应用程序中处理模拟的人 我想测试我的 ViewModel 并使用一些模拟框架来模拟它们 当然 所有可用的 通用 框架都不能在 Windows 应用商店应用程序项目中使用 我有一个想法如何
  • 返回“application/xml”而不是“text/plain”ASP.NET Core Web API

    我有一个 XML 字符串 我需要将其作为 XML 文档返回 默认情况下 返回的内容类型为text plain 内容已呈现 但我需要内容类型application xml 我启用了 RespectBrowserAcceptHeader 选项
  • C++ 是否可以延迟常量静态成员的初始化?

    我正在使用 Qt 但这是一个通用的 C 问题 我的情况很简单 我有一个课程Constants它有一个常量静态成员 我希望在进行某些函数调用后对其进行初始化 常量 h ifndef CONSTANTS H define CONSTANTS H
  • iPhone 上 NSString 的 AES 加密

    任何人都可以为我指明正确的方向 以便能够加密字符串 并返回带有加密数据的另一个字符串吗 我一直在尝试使用 AES256 加密 我想编写一种需要两个 NSString 实例的方法 一个是要加密的消息 另一个是用于加密它的 密码 我怀疑我必须生
  • 读取 C/C++ 的 EOF

    我正在使用 NetBeans MinGW 编译简单的 C 程序 我是新手 我的问题是我有这个简单的代码 include
  • 将分区扩展到另一级

    根据下图来自春季批量文档 http docs spring io spring batch reference html scalability html partitioning 主步骤被划分为六个从步骤 它们是主步骤的相同副本 我的问题
  • 计算5个城市之间的地理距离以及每个城市所有可能的组合

    所以我有一个 csv 文件 其中包含 3 列 城市 纬度 经度 我已经使用此代码从这个 csv 文件在 python 中创建了一个数据框 data pd read csv lat long csv nrows 10 Lat data lat
  • 2+3 是否被视为文字?

    假设我有类似的东西 int x 2 3 Is x被认为是字面意思吗 x是一个符号 2 3是一个表达式 2 and 3是文字
  • 如何从不知道要卸载的工件名称或工件组 ID 的脚本中执行与 mvn install 相反的操作? [复制]

    这个问题在这里已经有答案了 这听起来应该很容易 但我还没有找到答案 如果我使用 mvn install 安装一个工件 如何删除该工件 我尝试使用 dependency purge local repository 但它只删除依赖项 而不是实
  • 我的 matlab 图中需要不同的颜色

    这是我的情节代码 问题是我的图中的两条线具有相同的颜色 我需要为图中的每条线 总共 4 条线 分配一个特殊的颜色 for i 1 nFolderContents data hdrload folderContents i if size f
  • 如何在cordova中动态加载CSS

    我正在尝试通过 xhr 请求在 cordova 中动态加载 CSS CSS 的加载不是问题 我可以通过 xhr 加载它并通过 HTML5 文件 API 将其存储到文件系统 然后我就可以得到一个完美的 URL 但是如果我通过 javascri