2012-03-21 21 views
1

我々は、ColdFusion 8CFAJAXPROXYはない開閉headタグ

我々はCFAJAXPROXYを使用しているを使用している間、頭のタグにスクリプトを入れています。 ColdFusionがheadタグに挿入するタグに問題があることが判明しました。 headタグ内のIDがある場合、それはこのように、ページ上では動作しません、

<head> 
    <title></title> 
</head> 

:しかし

<head id="SomeID"> 
    <title></title> 
</head> 

は何が起こることは、このようなヘッドのタグを持つページに正常に動作しますCFJAXPROXYは、このようなページを吹く開閉headタグを、withingない、headタグ内のスクリプトを挿入することである:

<head <script type="text/javascript"></script> 
    <title></title> 
</head> 

IDがヘッドタグから削除された場合、問題はすぐに消えます。

これは既知のCFAJAXPROXYバグかどうかです。 CFAJAXPROXYに頭部領域内にスクリプトを置くが頭部タグには入れないようにする方法はありますか?

+0

「coldfusion-9」でタグ付けすることもあります。 –

答えて

1

<cfajaxproxy>をページに挿入するにはどうすればよいですか? <cfinclude>、カスタムタグ、またはおそらくApplication.cfcのメソッドを使用していますか?とにかく、いくつかのことが思い浮かぶ。あなただけ既に存在しているインクルードファイル(すなわち:

<html> 
<cfinclude template="stuff.cfm" /> 
<head id="head1"> 
</head> 
... 

)に<cfajaxproxy>を入れている場合は、おそらくあなたは、現在の1以上(id=なし)新しい<head>タグを挿入することができます。私はテストしましたが、それは<cfajaxproxy>が関係する限り動作しますが、どのような副作用があるのか​​わかりません。それ以外の<head>タグを現在のタグの下に置くか、またはそのようなものをネストしようとすると、になりません。 CFがやっているように見えるのは、<headの最初の出現を探し、1文字進めてからJSコードを挿入することです。別のアプローチは、<head(だけでなく、この「作品」)を含む偽のタグを使用することがあります。もちろん、

<fake<head> 
</fake<head> 

あなたが使用して、テンプレートを解析している場合には、物事を台無しことができるように、そのタグは、正当なXMLではありませんXMLParse()またはそのようなもの。

更新日:これは別の方法を使用すると効果があります。私はそれを試しましたが、複雑なコードで動作するかどうかはわかりません。 Application.cfcのonRequest()メソッドでは、次の操作を行います。私はそれがあなたの処理時間にどうなるのか分からない:

<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> 
+0

David、あなたはこう言っています: "CFがやっているように見えるのは、 1文字進めてからJSコードを挿入してくださいこれはまさに私が推測したものです。あなたの解決策 ""は面白いです。私はそれを試してみましょう。ありがとう!!! –

+1

@EvikJames、私はそれがうまくいきたい。そうでなければ、私は 'onRequest()'を使う解決策を考え出しました(更新された答えを見てください)。 –

1

ヘッドタグにIDを追加する必要があるとは思いません。これは適切なHTML構文ではありません。

+0

私は同意します。しかし、私たちは1,000以上のサイトを持っており、実際にはリアルタイムの投資をせずに変更することはできません。これは明らかにColdFusionが間違っていることです。サイトを修正する前に、まずColdFusionソリューションを探しています。 –

+0

@EvikJames、私はColdFusionが何か間違っているとは思わない、それは不便な何かをやっている。 –

+0

html 5はグローバル属性としてidを持つため、HEADタグに追加することができます。それがHTML 5のdoctypeでなければ、それはそこにあってはいけません。つまり、id属性のためにColdFusionがHEADタグを間違って解析しているように見えます。それはバグが報告されているようには見えないので、投稿することをお勧めします。https://bugbase.adobe.com/ –

1

HEADタグの「接頭辞」属性がある必要があるのFacebookアプリと同じ問題を持ちます。

CFAJAXPROXYの前に私はAJAX呼び出しにCFAjaxというサードパーティのソリューションを使用しました。

を更新し

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

Iは= "テスト" プレフィックス= "テスト" > <ヘッドIDを使用してColdFusion 10でテストを実行しました。

HEADタグの '>'を閉じると、ColdFusionによってscriptタグが挿入されました。これは明らかにCF8とCF9のバグです。

+0

それはColdFusion 10で修正されているかもしれませんが、私はそれを疑っています。 –

+0

私は自宅のdevボックスにCF 10をインストールしました。私は今夜​​後に何が起こるかを見るためにこれを試すかもしれません。私は私の発見を投稿します。 – XenoFoxx

+1

HEADタグに追加のパラメータがある場合でもCFAJAXPROXYはバージョン10で動作します – XenoFoxx

関連する問題