Если я делаю что-то вроде этого в ColdFusion:
<cfoutput>foo="#foo()#"</cfoutput>
Получающийся HTML имеет пространство перед ним:
foo=" BAR"
Однако, если это не вызов функции, это хорошо работает, т.е.:
<cfset fooOut=foo() />
<cfoutput>foo="#fooOut#"</cfoutput>
Дает этот вывод:
foo="BAR"
Куда это дополнительное пространство прибывает из и является там чем-нибудь, что я могу делать с этим?
Редактирование Для разъяснения пространство не находится в значении, возвращенном моим foo
функция:
<cffunction name="foo" access="public" returntype="string">
<cfreturn "BAR" />
</cffunction>
Но я также нашел, что этого не происходит со встроенными функциями, т.е.:
<cfoutput>"#UCase("bar")#"</cfoutput>
Печать:
"BAR"
Однако это действительно происходит, если я передаю вывод своей функции к встроенной функции (эта часть не имеет никакого смысла мне). т.е.:
<cfoutput>"#UCase(foo())#"</cfoutput>
Печать:
" BAR"
Убедитесь, что атрибут output определен как false.
<cfcomponent output="false">
<cffunction name="foo" access="public" returntype="string" output="false">
<cfreturn "BAR">
</cffunction>
</cfcomponent>
Или сделайте это в стиле cfscript, и лишние пробелы не будут введены.
function foo()
{
return "BAR";
}
Посмотрим, поможет ли это http://www.simonwhatley.co.uk/eliminating-whitespace-in-coldfusion