将变量传递到符合W3C的外部js文件

时间:2014-10-02 10:54:09

标签: javascript

我一直在关注Shopify Resources的提示,要求访问者根据欧盟Cookie法律允许使用Cookie。

编码有效,但当我通过W3C Markup Validation Service提供的编码时,会出现以下错误

  

错误第25行,第139列:元素上不允许属性read_more   脚本此时。 ... -cookie / require-opt-in.js“read_more =”doc / website_privacy_policy.pdf“>

我的编码是

<link rel="stylesheet" type="text/css" href="http://www.heartinternet.co.uk/eu-cookie/main.css"/>
<script type="text/javascript" src="http://www.heartinternet.co.uk/eu-cookie/support-opt-in.js"></script>
<script type="text/javascript" src="http://www.heartinternet.co.uk/eu-cookie/require-opt-in.js" read_more="doc/website_privacy_policy.pdf"></script>

我尝试将read_more属性移到<script>标记之外,方法是将其更改为

<script type="text/javascript" src="http://www.heartinternet.co.uk/eu-cookie/require-opt-in.js">read_more="doc/website_privacy_policy.pdf";</script>

这不起作用,因为它没有在弹出窗口中显示“阅读更多”链接。我还尝试将其放入单独的<script>块中,以便将编码更改为

<link rel="stylesheet" type="text/css" href="http://www.heartinternet.co.uk/eu-cookie/main.css"/>
<script type="text/javascript" src="http://www.heartinternet.co.uk/eu-cookie/support-opt-in.js"></script>
<script type="text/javascript">read_more="doc/website_privacy_policy.pdf";</script>
<script type="text/javascript" src="http://www.heartinternet.co.uk/eu-cookie/require-opt-in.js"></script>

但这也不起作用。同样,没有显示“阅读更多”链接。

有没有办法将read_more变量传递到require-opt-in.js文件并符合W3C标记?

2 个答案:

答案 0 :(得分:1)

他们似乎没有给你传递网址的另一种选择。您可以手动设置读取更多链接,更改最后一个脚本块(即创建小部件的脚本块),并自行编写一个。例如:

<script type="text/javascript">
    "use strict";
    var showSplash = function(){
        HI.optInCookies.readMoreURL = "doc/website_privacy_policy.pdf";
        HI.optInCookies.showSplash();
    };
    if(document.body) {
        showSplash();
    } else {
        setTimeout(showSplash, 100);
    }
</script>

如果他们改变他们的api会破坏,但我没有看到其他选项,因为他们搜索更多url的代码正在查看脚本块中名为“read_more”的属性。 你可以改变上面的代码,以对你最有意义的方式传递更多的url。

您也可以在this fiddle中尝试。

答案 1 :(得分:0)

您可以使用JavaScript插入脚本:

var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "http://www.heartinternet.co.uk/eu-cookie/support-opt-in.js");
script.setAttribute("read_more", "doc/website_privacy_policy.pdf");
document.getElementsByTagName("head")[0].appendChild(script);

因此W3C标记验证服务不会检测到它。