谷歌AdWord示例haml

时间:2013-08-28 22:05:15

标签: haml google-adwords

给出这个例子:https://support.google.com/adwords/answer/3207306?hl=en&rd=1

如何将“对代码段进行疑难解答”部分下列出的代码转换为haml?

我最接近的是:

%script{:type=>"text/javascript"}
  :cdata
    var google_conversion_id = 123456789;
    var google_conversion_language = "en";
    var google_conversion_format = "3";
    var google_conversion_color = "ffffff";
    var google_conversion_label = "AAAAAAAAAAAAAAAAAAA";
    var google_conversion_value = 0;
    var google_remarketing_only = false;
%script{:type => "text/javascript", :src => "//www.googleadservices.com/pagead/conversion.js"}
%noscript
  %div{:style => "display:inline;"}
    %img{:height => "1", :width => "1", :style => "border-style:none;", :alt => "", :src => "//www.googleadservices.com/pagead/conversion/123456789/?value=0&label= AAAAAAAAAAAAAAAAAAA&guid=ON&script=0".html_safe}

上面的问题是:cdata标签产生:

<script type="text/javascript">
    <![CDATA[
        var google_conversion_id = 123456789;
        var google_conversion_language = "en";
        var google_conversion_format = "3";
        var google_conversion_color = "ffffff";
        var google_conversion_label = "AAAAAAAAAAAAAAAAAAA";
        var google_conversion_value = 0;
        var google_remarketing_only = false;

    ]]>
</script>

而不是:

<script type="text/javascript">
   /* <![CDATA[ */
   var google_conversion_id = 123456789;
   var google_conversion_language = "en";
   var google_conversion_format = "2";
   var google_conversion_color = "ffffff";
   var google_conversion_label = "AAAAAAAAAAAAAAAAAAA";
   var google_conversion_value = 0;
   /* ]]> */
</script>

有没有办法明确声明CDATA标签?或者谷歌不是那么挑剔吗?

3 个答案:

答案 0 :(得分:1)

你可以在行的开头使用\来转义/ haml。我遇到了同样的问题,以下内容让我在我们的网站中加入了谷歌adwords转换跟踪代码:

<script type="text/javascript">
\/* <![CDATA[ */
var google_conversion_id = 123456789;
var google_conversion_language = "en";
var google_conversion_format = "2";
var google_conversion_color = "ffffff";
var google_conversion_label = "AAAAAAAAAAAAAAAAAAA";
var google_conversion_value = 0;
\/* ]]> */
</script>
haml处理后的

变为:

<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = 123456789;
var google_conversion_language = "en";
var google_conversion_format = "2";
var google_conversion_color = "ffffff";
var google_conversion_label = "AAAAAAAAAAAAAAAAAAA";
var google_conversion_value = 0;
/* ]]> */
</script>

答案 1 :(得分:1)

在讨论了上述的许多变化之后,我终于“作弊”并且只使用了:plain标签来完全按照我想要的方式获得它。下面的代码完全复制了Google Analytics示例页面上的内容,Chrome的Google Tag Assistant插件确认它正常运行。注意:我还必须将googleadservices链接更改为HTTPS,以便它与我的页面的其余部分匹配(这导致其他难以追查的问题,并且Tag Assistant帮助对其进行排序)。

这应该适合你:

%script{:type=>"text/javascript"}
  :plain
    /* <![CDATA[ */
    var google_conversion_id = 123456789;
    var google_conversion_language = "en";
    var google_conversion_format = "3";
    var google_conversion_color = "ffffff";
    var google_conversion_label = "AAAAAAAAAAAAAAAAAAA";
    var google_conversion_value = 0;
    var google_remarketing_only = false;
    /* ]]> */
%script{:type => "text/javascript", :src => "https://www.googleadservices.com/pagead/conversion.js"}

答案 2 :(得分:0)

HTML中并不真正需要CDATA标记。目的是允许在javascript中使用文字<之类的东西而不必逃避它们。 CDATA部分有时与XHTML一起使用,但即使这样,XHTML通常也被浏览器视为HTML。

使用Haml,您可以使用:javascript filter这样的块。如果您的文档格式为XHTML,则会添加CDATA部分,否则将其删除。如果格式为HTML5,它也会省略type属性,因为在这种情况下默认值为text/javascript

所以:

:javascript
  var google_conversion_id = 123456789;
  // etc ...

格式为HTML5(默认值)

时会产生此效果
<script>
  var google_conversion_id = 123456789;
  // etc ...
</script>

,当格式为XHTML:

<script type='text/javascript'>
  //<![CDATA[
    var google_conversion_id = 123456789;
    // etc ...
  //]]>
</script>

请注意,这会对//标记使用CDATA条评论,而不是Google页面建议的/* ... */条评论,但这无关紧要。

相关问题