首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFAJAXPROXY将脚本放入head标记中,而不是放在open和close head标记之间

CFAJAXPROXY将脚本放入head标记中,而不是放在open和close head标记之间
EN

Stack Overflow用户
提问于 2012-03-21 22:54:57
回答 3查看 769关注 0票数 1

我们使用的是ColdFusion 8。

我们使用的是CFAJAXPROXY。我们刚刚发现ColdFusion在head标签中插入的标签有一个问题。它在有一个head标签的页面上运行良好,如下所示:

代码语言:javascript
复制
<head>
    <title></title>
</head>

但是,它在head标签中有ID的页面上不起作用,如下所示:

代码语言:javascript
复制
<head id="SomeID">
    <title></title>
</head>

发生的情况是,CFJAXPROXY在head标记内插入脚本,而不是使用开始和结束head标记,这会导致页面崩溃,如下所示:

代码语言:javascript
复制
<head <script type="text/javascript"></script>
    <title></title>
</head>

如果从head标签中删除ID,问题就会立即消失。

问题是这是否是一个已知的CFAJAXPROXY错误?有没有办法告诉CFAJAXPROXY把脚本放在head区域而不是head标签?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-22 01:20:23

如何将<cfajaxproxy>插入到页面中?您是否正在使用<cfinclude>、自定义标记或Application.cfc中的方法?不管怎样,我会想到几件事。如果您只是将<cfajaxproxy>放入已存在的包含文件中(即:

代码语言:javascript
复制
<html>
<cfinclude template="stuff.cfm" />
<head id="head1">
</head>
...

),那么您也许可以在当前的<head>标记上插入一个新的id=标记(不带the )。我已经测试过了,就<cfajaxproxy>而言,它是有效的,尽管我不知道它可能会有什么副作用。如果你把另一个标签放在当前的<head>标签下面,或者你试图嵌套它们,或者类似的东西,它就不会工作。CF似乎要做的是查找<head的第一个匹配项,前进一个字符,然后插入JS代码。另一种方法可能是使用一个包含<head的伪标签(这也是“有效”的):

代码语言:javascript
复制
<fake<head>
</fake<head>

当然,该标记不是合法的XML,所以如果使用XMLParse()或类似的方法解析模板,可能会搞砸。

更新:这是你可以使用的另一种方法,它可能会起作用。我试过了,但不知道它是否能处理复杂的代码。您将在Application.cfc的onRequest()方法中执行以下操作。不过,我不知道这会对您的处理时间造成什么影响:

代码语言:javascript
复制
<cffunction name="onRequest" access="public" returntype="void" output="true">
    <cfargument name="target_page" type="string" required="true" />

    ...

    <cfsilent>
    <!--- Grab the requested page. --->
    <cfsavecontent variable="local.target_page">
        <cfinclude template="#arguments.target_page#" />
    </cfsavecontent>

    <!--- Replace bad <head> tag with good one --->
    <cfset local.target_page = REReplace(local.target_page, "(<head[^>]*>)", "<head>") />
    <cfajaxproxy ... />
    </cfsilent>
    <cfoutput>#local.target_page#</cfoutput>

    <cfreturn />
</cffunction>
票数 1
EN

Stack Overflow用户

发布于 2012-03-22 00:04:10

我不认为你应该在头标签上加一个ID。这不是正确的HTML语法。

票数 1
EN

Stack Overflow用户

发布于 2012-06-08 00:03:58

Facebook App也有同样的问题,它需要在HEAD标签上有一个"prefix“属性。

在CFAJAXPROXY之前,我在AJAX调用中使用了名为CFAjax的第三方解决方案。

http://www.indiankey.com/cfajax/

已更新

我在ColdFusion 10中运行了一个测试。

ColdFusion在HEAD标签的结束'>‘之后注入了脚本标签。所以这显然是CF8和CF9的一个bug。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9807082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档