Как вы вставляете <cfajaxproxy>
на страницу?Используете ли вы <cfinclude>
, пользовательский тег или метод в Application.cfc?Во всяком случае, пару вещей приходят на ум.Если вы просто помещаете <cfajaxproxy>
во включаемый файл, который уже существует (то есть:
<html>
<cfinclude template="stuff.cfm" />
<head id="head1">
</head>
...
), то, возможно, вы можете вставить новый тег <head>
(без id=
) вышетекущий.Я проверил, и это работает в отношении <cfajaxproxy>
, хотя я не знаю, какие побочные эффекты это может иметь. не будет работать , если вы поместите другой тег <head>
ниже текущего тега, или если вы попытаетесь вложить их или что-то в этом роде.Похоже, что CF делает поиск первого вхождения <head
, продвигает один символ и затем вставляет код JS.Другой подход может заключаться в использовании фальшивого тега, включающего <head
(это тоже «работает»):
<fake<head>
</fake<head>
Конечно, этот тег не является допустимым XML, поэтому он может испортить ситуацию, если выпарсинг ваших шаблонов с использованием XMLParse () или чего-либо подобного.
ОБНОВЛЕНИЕ: Вот еще один метод, который вы можете использовать, который может работать.Я пробовал, но не знаю, будет ли он работать со сложным кодом.Вы должны сделать следующее в onRequest()
методе Application.cfc.Я не знаю, что это сделает с вашим временем обработки:
<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>