Хорошо, во-первых, отметим, что cfif
на самом деле не находится внутри вашей функции document.ready
.Что касается сервера CF, то JS - это просто текст, ничем не отличающийся от HTML или чего-либо еще.
CFML запускается на сервере и генерирует текст (HTML / JS), который передается на веб-серверзатем через Интернет браузер пользователя интерпретирует текст как HTML + JS.
Некоторые функции CF могут стирать различия, скрывая часть вперед и назад, но важно знать, что на самом деле происходит: ваш CFML генерирует текст / код, но напрямую не взаимодействует с этим JavaScript.
Но в любом случае вернемся к основному вопросу ... как вы делаете это нормально, но не обязательно лучшим способом.JavaScript должен быть в отдельных файлах, чтобы их можно было кэшировать / обновлять по отдельности на странице.Кроме того, в зависимости от того, что может содержать ваш JS, вы можете заблокировать доступ к самому файлу.
Так как вы используете проверки входа на уровне CF, способ сделать это - использовать файл CFM дляВаш JS и добавьте проверку вверху файла.
Я бы, вероятно, сделал бы это так:
<script type="text/javascript" src="includes/common.js"></script>
<cfif (logincheck) >
<script type="text/javascript" src="includes/loggedin.js.cfm"></script>
</cfif>
Тогда внутри loggedin.cfm
вы получите:
<!--- Check again for authentication, and exit if not. --->
<cfif NOT (logincheck) >
<cfabort/>
</cfif>
<!--- Tell the browser this is a JS file (default is HTML) --->
<cfcontent reset type="text/javascript"/>
// js admin functions...
$(document).ready(function(){...});
<!--- Ensure debugging is always off to prevent the JS errors it would otherwise cause. --->
<cfsetting showdebugoutput="false" />
<!--- (you can consider a <cfabort/> here, depending on if you want onRequestEnd to run or not) --->