在tridion组件中使用javascript的onclick命令

在tridion组件中使用javascript的onclick命令,tridion,tridion-2011,tridion-content-delivery,Tridion,Tridion 2011,Tridion Content Delivery,这是我试图修改和发布的组件中的代码 这是我想在组件中单击超链接时添加的代码 Onclick=“var s=s_gi(s_account);s.linkTrackVars='eVar7';s.eVar7='optin.holidays';s.tl(this,'o',Email Signup | Holidays')” 当我尝试添加单引号时,渲染就会混乱。我试着用/“eVar7/”、/“eVar7/”、“eVar7”和'eVar7'但没有一个成功。然后我试了这个 Onclic

这是我试图修改和发布的组件中的代码

这是我想在组件中单击超链接时添加的代码

Onclick=“var s=s_gi(s_account);s.linkTrackVars='eVar7';s.eVar7='optin.holidays';s.tl(this,'o',Email Signup | Holidays')”
当我尝试添加单引号时,渲染就会混乱。我试着用/“eVar7/”、/“eVar7/”、“eVar7”和'eVar7'但没有一个成功。然后我试了这个

Onclick=“var s=s_gi(s_account);s.linkTrackVars=eVar7;s.eVar7=optin.holidays;s.tl(this,o,Email Signup | Holidays)” 
和已渲染的链接,但它不起作用(未将值发送到Omniture)

所以我回到了基础,然后尝试添加此代码

<a title="Holidays" href="tcm:8-21734" onclick="alert(\'here\');"><img title="btn_email_sign_up" alt="btn_email_sign_up" src="tcm:8-23980"/></a>

这就是我在.aspx中得到的

<tridion:ComponentLink runat="server" PageURI="tcm:13-31055-64" ComponentURI="tcm:13-21734" TemplateURI="tcm:0-0-0" AddAnchor="false" LinkText="&lt;img src=&#39;/Images/btn_email_sign_up_tcm13-23980.jpg&#39; /&gt;" LinkAttributes="onclick=&#39;alert(&#92;&#39;here&#92;&#39;);&#39;" TextOnFail="true"/>

这就是我在萤火虫身上看到的

<a here\');'="" onclick="alert(\" href="/Email-Signup/Holidays.aspx"><img src="/Images/btn_email_sign_up_tcm13-23980.jpg"></a>

请让我知道,如果有人可以帮助,如果你需要的TBB呈现这个组件

Onclick=“var s=s_gi(s_account);s.linkTrackVars='eVar7';s.eVar7='optin.holidays';s.tl(this,'o',Email Signup | Holidays')”

提前感谢

尝试更改此选项。tridion:href解析组件链接,img src发布图像

<a title="Holidays" tridion:href="tcm:8-21734" onclick="alert('here');"><img title="btn_email_sign_up" alt="btn_email_sign_up" src="tcm:8-23980"/></a>

对于CDA上的链接解析,组件“tcm:8-21734”需要在一个页面上,并且该页面需要发布。当链接解析成功时,链接将指向页面url(例如;
structuregroupfolderpath/filename.html

这是Tridion链接上的文档


我试图重现你的问题,但对我来说一切似乎都很好。因此,我将描述我所拥有的,希望它能帮助您解决您的问题:

模式 我有一个包含以下字段的模式:

  • LinkedComponent-组件链接字段
  • ImageToDisplay-多媒体组件链接字段
  • OnClick-单行文本字段
  • 组成部分 我基于这个模式创建了一个组件,它链接到Tridion实例中的其他组件和图像,并在OnClick字段中包含您的脚本

    这是该组件的XML:

    
    var s=s_gi(s_账户);s、 linkTrackVars='eVar7';
    s、 eVar7='optin.holidays';s、 tl(此为“o”,电子邮件注册为“假日”)
    
    注意,为了可读性,我刚刚在
    OnClick
    值中添加了一个换行符。此换行符在原始XML中不存在

    载重吨 接下来,我创建此DWT以输出链接:

    
    
    同样,上述片段中的任何换行符都是为了可读性而添加的。我的Tridion系统中的DWT将所有这些都集中在一条线上

    组件模板、页面模板和发布目标 我在设置为输出HTML片段的组件模板中使用此DWT。除了DWT之外,此组件模板仅包含默认的完成操作(当然在DWT之后)

    我使用的页面模板是常规默认页面模板的副本,我刚刚将文件扩展名更改为
    aspx

    我的发布目标的目标语言设置为ASP.NET

    已发布的ASPX 所有这些步骤都会导致在我发布的ASPX页面中出现以下片段:

    
    
    在这里,我也添加了一些换行符来略微提高可读性。在原始的ASPX页面中,整个块位于一行上

    浏览器中的HTML 最后,这将导致浏览器中出现以下HTML:

    
    
    我不确定是否触发了
    onclick
    脚本,但我不认为这是您最初的问题。尽管在不同的层次上进行了大量的转义,但脚本最终还是以HTML格式结束——至少在我看来是这样

    不要混合使用JavaScript和内容 但这留下了一个大问题:你们到底为什么要把JavaScript放在内容领域?这违反了将内容与代码分离的所有最佳实践,只意味着你正在为将来的维护问题做准备(例如,如果你想开始发送电子邮件怎么办?)

    当然,点击分析软件跟踪的链接是一项有效的要求(事实上,从我记忆中起,这就是Tridion内容交付堆栈的一项功能)

    但我建议以不同的方式实现它,例如简单地用特定的CSS类或HTML5数据属性标记每个链接:


    如何将此JavaScript添加到HTML中?它是否在您的一个组件中?还是在DWT中?还是C#TBB?javascript在组件中。演示服务器上.aspx源代码的链接中有什么?谢谢Ram,但这对我来说不起作用。输出为。javascript警报已生效,但超链接已关闭。链接未得到解决。页面上有组件吗?页面是否已发布?是的,页面已发布,javascript工作正常,但链接已消失。链接代码是否仍存在于已发布的ASPX中?如果没有,您在发布目标上设置了什么目标语言?这个组件模板使用哪种输出语言?另外,请检查我更新的链接解析说明。我们所指的页面是您希望解析链接的页面。