Проверьте, не нахожусь ли я внутри cfwindow
У меня есть страница ошибки на моем сайте, которая вызывается всякий раз, когда возникает ошибка, иногда из окна cfwindow, и тогда я не хочу показывать верхний и нижний колонтитулы.
У меня есть множество cfwindows, которые могут генерировать эту ошибку (работая над этим...)
Поэтому вместо добавления информации в родительское окно, вызывающее cfwindow, я просто (если возможно) хотел бы проверить на странице ошибок
if(parent.cfwindow){remove the header and footer}
Спасибо за помощь
1 ответ
За обновленный / уточненный вопрос (относительно того, что это за страница с ошибкой).
Хотя javascript все еще может справиться с этим, он лучше всего подходит для серверной части.
Я не знаю, что ты OnError
метод выглядит, или если вы используете application.cfm
, Вот как я могу сделать это:
Вместо прямого перенаправления на /error.cfm
или какова бы ни была страница ошибки, я бы:
<cfif not isDefined("url.inWindow")>
<cflocation url="/error.cfm" addtoken="no" />
<cfelse>
<cflocation url="/error.cfm?inWindow=1" addtoken="no" />
</cfif>
И в файле ошибок, я бы сделал несколько <cfif>
на основе присутствия, url.inWindow.
В Javascript, и особенно в jQuery, тоже есть способы сделать это, вы можете удалить содержимое верхнего и нижнего колонтитула и использовать unwrap()
, чтобы вытащить содержимое области содержимого, как показано здесь: JS - удалить тег без удаления содержимого.
Я не пользуюсь CFWINDOW
поэтому, к сожалению, я не знаком с нюансами, и Railo поддерживает его немного по-другому
Холодный синтез
Лучший путь Cold Fusion для достижения этой цели - просто передать переменную url через ссылку на источник.
<cfwindow ... source="/demo/6/windowContentA.cfm?inWindow=1">
А потом, внутри документа.
<cfif isDefined("url.inWindow")>The page is within a window</cfif>
Javascript
Способ сделать это в javascript связан либо с (и это часть, которую я не могу проверить: / без доступа к ACF.), Либо с проверкой, является ли окно верхним элементом (но это может не работать).
<a href="javascript:void(0)" onclick="alert((self==top ? 'in a popup' : 'not in a popup'));">Test link</a>
Или (если это не сработает, проверьте, существует ли элемент на странице).
<a href="javascript:void(0)" onclick="alert(( document.getElementById('cf_window1') ? 'in a popup' : 'not in a popup'));">Test link</a>
Поскольку CFWindow создал элемент с именем cf_window1, я использовал его для тестирования, но вы должны иметь возможность использовать любое имя элемента. Вы можете создать элемент специально для этой цели, если хотите.
Несмотря на то, что таким образом мне удалось протестировать... с помощью некоторого волшебства, которое не имеет значения, вы могли бы использовать подобный javascript в теге script, чтобы сделать что-то помимо оповещения.
<script>
if(self==top) {
// The page is outside of a frame.
}
</script>
Или маршрут поиска элемента
<script>
if(document.getElementById('cf_window1')) {
// The page is within a frame.
}
</script>
Ни один из маршрутов не должен считаться очень безопасным. Это для удобства и показа, но вы не должны считать их непроницаемыми, потому что это не так.