document.write в html / php doc пишет на новую страницу - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь написать фрагмент текста поверх существующей веб-страницы в зависимости от того, установлен ли файл cookie. Часть cookie работает нормально, но document.write заставляет текст появляться на новой пустой странице.

<script type="text/javascript">
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
{
alert("Welcome again " + username);
}
else
{
username=prompt("Please enter your name:","");
document.write ("hello"); 
if (username!=null && username!="")
{
setCookie("username",username,7);

}
}
}
</script>


<body onload="checkCookie()">

</body>

Полагаю, мне нужно как-то использовать z-index, но, похоже, он не работает. Если бы кто-нибудь мог объяснить, как я заставил мою строку 'document.write' появиться поверх содержимого, уже существующего на странице, я был бы очень благодарен. Все это происходит на странице сайта joomla, а код находится в файле php для одного из модулей. Спасибо всем.

Rob.

Ответы [ 3 ]

2 голосов
/ 23 сентября 2011

document.write() следует избегать.

Имеется несколько (возможно) допустимых вариантов использования, каждый из которых должен быть встроен в элемент script и выполнен как страница

Когда вы используете его за пределами загрузки страницы, он неявно вызовет document.open(), который очистит вашу страницу.

Вы должны предпочесть современные стандартизированные методы DOM.

2 голосов
/ 23 сентября 2011

Присвойте телу идентификатор, например «body», затем используйте следующее:

document.getElementById('body').innerHTML = 'Text that you want to assign';

W3 Schools имеет хороший пример этого .

1 голос
/ 23 сентября 2011

Я думаю, что вы должны определить часть в вашей разметке, в которую должно быть добавлено сообщение.

<div id="wrapper">
<div id="message"></div>
<div id="content">
...
</div>
</div>

Так что вы можете просто добавить свое Сообщение в "message" -div:

document.getElementById('message').innerHTML = 'Hello '+username;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...