我有一张动态创建的数据和链接表。该网站是用coldfusion构建的,我不太了解。 将数据填充到页面的代码行如下(至少我确定这一点):
<cfoutput>
<td>
<![CDATA[
<a href="##" onclick="javascript:viewRecord('#priKeyId#');setTimeout('gridMenu.cancelmenu();',50);" title="View"> #rowdat#
</a>
]]>
</td>
</cfoutput>
这个技巧似乎在CDATA标签中,因为如果我不使用它并将代码切换回xmlformat(#rowdat#)而不是; firefox喜欢它,它显示我表中的所有数据/链接没有问题!但是,问题转移到其他浏览器! (chrome,IE,safari他们都喜欢cdata!) 任何帮助如何让firefox正确显示表数据?
由于
Update1:这是一张link,其图片可能比我更能解释这个问题!
Update2:问题似乎是从href =“##”生成的链接。所以我试着在代码和HTMLEditFormat()之前设置实际的链接,如下所示:
<cfset mylink ="https://my.site.com/index.cfm?event=public.my.site.view&site_id=" & priKeyId
<cfset mylink = HTMLEditFormat(mylink)>
<cfif colName eq link>
<cfoutput>
<td id="cdata">
<a onclick="viewRecord('#priKeyId#');setTimeout('gridMenu.cancelmenu();', 50);return false;" href="#mylink#" title="View">#rowdat#</a>
</td>
</cfoutput>
然而,这也不起作用。
答案 0 :(得分:2)
请允许我指向this answer,而不是关闭它,这表明Firefox不支持“禁用 - 输出 - 转义”。
如果您使用的是ColdFusion 10,
<a href="##" onclick="javascript:viewRecord('#priKeyId#');setTimeout('gridMenu.cancelmenu();',50);" title="View">#encodeForHTML(rowdat)#</a>
否则,xmlFormat()没问题。
答案 1 :(得分:1)
试试这个:
删除CDATA,不要使用它,而是使用它:
<cfoutput>
<td>
<a href="##" onclick="javascript:viewRecord('#priKeyId#');setTimeout('gridMenu.cancelmenu();',50);" title="View">#HTMLEditFormat(rowdat)#</a>
</td>
</cfoutput>
我在Firefox,IE,Chrome和Opera中尝试过,因为HTMLEditFormat()应该可行。如果它适用于您,请告诉我。
答案 2 :(得分:1)
首先,感谢您@iKnowKungFu和@ TechMark2K的投入,帮助我发现/消除了解决我问题的方案。
其次,了解FF如何处理CDATA部分对于了解如何解决它至关重要。我发现FF从CDATA的开头一直注释到下一个HTML标签的结尾并停在那里!此外,它按字面解释任何非Javascript动态生成的代码(例如,从href =“##”生成的链接)。
知道了,我通过5个步骤解决了我的问题:
1-使用CDATA部分,因为它解决了除firefox以外的所有浏览器中的问题并单独处理Firefox的问题。
2-使Firefox正确显示CDATA部分的内容:
a- Comment out (not removing) only the closing of CDATA tag: `<!-- ]]> -->` (FF kept showing it at the end of my text). Other browsers' behavior towards cdata didn't change with this modification.
b- Ditch the href="## as FF doesn't interpret it well inside CDATA. So I generated it outside CDATA and used a variable instead: href=#myLink# .
3-使用CF函数#toScript(#linksArray#,“links”)#将链接(或链接数组)发送到javascript变量中。如果您使用数组,请务必发送带有链接的区别ID(我个人不需要执行此步骤因为插件功能,所以即使在处理之后我也跳过它!)
4-给目标文本一个id =“myText”(不是包含它们的整个标记,使用<span id ="myText"
&gt;)
5- if (you skipped step 3, for any reason, like me) {
style "myText" id to look/behave like a link!(and don't tell others about it)
} else {
or better, using JavaScript or jQuery, surround "myText" id text contents with an anchor tag of the matching link from the javascript variable(or array): "links" .
}
直到FF开发社区醒来并在FireFox中修复此错误(幸运的是不是粉丝)我希望这可以帮助那些偶然发现CDATA-Firefox相关问题的人。