Цель состоит в том, чтобы иметь возможность щелкнуть ссылку, чтобы открыть новое окно, в котором отображается отформатированный исходный код из родительского окна.
Благодаря исследованиям мне удалось выполнить большую часть задачи, ноМне нужно новое окно для отображения исходного кода точно , как это в родительском, отступ и все.В настоящее время HTML-сущности отображаются в качестве их отображаемого аналога (поэтому он выводит фактический товарный знак вместо ™
) источника.
Я думал о циклическом просмотре группы сущностей и выполнении замены строки, так каквы увидите в моем примере, но я думаю, что логика отключена, и я не знаю, что происходит.
В частности, сущности: • (bull), & (amp), ®(reg), ™ (trade), <(lt),> (gt)
Вот код, который запускает гиперссылка, которую я имею до сих пор, бонус каждому, кто сможет выяснить, что представляет собой закрывающий тег bodyвывод во второй строке (я в тупике):
Заранее большое спасибо за любое направление, ведущее к разрешению.
<code>function viewSource( e )
{
e.preventDefault( );
var source = '<!DOCTYPE html>' + "\n"
+ '<html xmlns="http://www.w3.org/1999/xhtml">' + "\n\n"
+ "\t" + document.getElementsByTagName( 'html' )[0].innerHTML + "\n\n"
+ '</html>';
entities = [
new Entity( '<', '<' ),
new Entity( '>', '>' )
];
for ( var i = 0; i < entities.length; i++ )
{
var regex = new RegExp( entities[i].entity, 'g' );
source = source.replace( regex, entities[i].html );
}
source = '<pre>' + source + '
';var sourceWindow = window.open ('', '_blank');sourceWindow.document.write (source);sourceWindow.document.close ();if (window.focus) {sourceWindow.focus ();}}
Обновление (все еще неразгаданные загадки):
Я попытался предложить использовать запрос AJAX, но он все еще дает те же результаты (строка11 показывает new Entity( '<', '<'),
).Вот как выглядит AJAX-попытка:
<code>function viewSource( e )
{
e.preventDefault( );
var xmlhttp;
if ( window.XMLHttpRequest )
{
// IE7+, Fx, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest( );
}
else
{
// IE6, IE5
xmlhttp = new ActiveXObject( 'Microsoft.XMLHTTP' );
}
xmlhttp.onreadystatechange =
function ( )
{
if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 )
{
var source = xmlhttp.responseText.replace( /</g, '<' ).replace( />/g, '>' );
source = '<pre>' + source + '
';var sourceWindow = window.open ('', '_blank');sourceWindow.document.write (source);sourceWindow.document.close ();if (window.focus) {sourceWindow.focus ();}}};xmlhttp.open ('GET', '/', true);xmlhttp.send ();}