【问题标题】:Dynamically added stylesheet only taken into account if first one仅在第一个时才考虑动态添加的样式表
【发布时间】:2019-08-14 09:33:12
【问题描述】:

我在 WKWebView 中动态添加 2 个样式表,并使用 loadFileURL 加载本地内容。

cocoa 应用程序调用以下 javascript sn-p 来添加样式表。

var link = document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.type = 'text/css';
link.title = csstype;
link.href = cssSheetPath1;
document.head.appendChild(link);

var link = document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.type = 'text/css';
link.title = csstype;
link.href = cssSheetPath2;
document.head.appendChild(link);

这 2 个样式表位于同一目录中。我可以加载第一个或第二个,但不能同时加载。如果我尝试同时加载两者,则只会应用第一个。

知道问题出在哪里吗?

【问题讨论】:

    标签: javascript css macos cocoa wkwebview


    【解决方案1】:

    你必须运行两次。创建一个函数,然后为两个样式表调用它。

    const createLink = (cssSheetPath) => {
        const link = document.createElement('link');
        link.setAttribute('rel', 'stylesheet');
        link.type = 'text/css';
        link.href = cssSheetPath;
        document.head.appendChild(link);
    }
    
    createLink('style1.css');
    createLink('style2.css');
    

    添加了运行代码示例:codesandbox example


    如果你不使用函数,那么你应该尝试使用两个不同的变量名:

    var link = document.createElement('link');
    link.setAttribute('rel', 'stylesheet');
    link.type = 'text/css';
    link.title = csstype;
    link.href = cssSheetPath1;
    document.head.appendChild(link);
    
    var link1 = document.createElement('link');
    link1.setAttribute('rel', 'stylesheet');
    link1.type = 'text/css';
    link1.title = csstype;
    link1.href = cssSheetPath2;
    document.head.appendChild(link1);
    

    我无法使用 WKWebView 对其进行测试。

    【讨论】:

    • 这正是我正在做的,什么不起作用,因此我的问题。
    • 您在示例中只定义了一个链接元素。因此,当您尝试将此元素用于两个样式表时,您会覆盖它。
    • 谢谢,我知道它可以在浏览器中使用。我的问题是 WKWebView ,第一个只有一个。 (如果我也交换它们)
    • 问题依旧
    • 我找到了这个 -> SO answer。也许有帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2015-01-19
    • 2021-12-30
    • 2019-12-08
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    相关资源
    最近更新 更多