Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   UpJump: Q&A :) (https://javascript.ru/forum/misc/14421-upjump-q.html)

UpJump 05.02.2011 22:09

это хорошо:) спасибо за помощь

UpJump 06.02.2011 21:08

Почему не работает <noscript>? Где ошибка?
Проверил в Opera и Firefox. Хотя указанно что вроде поддерживается везде.
<script type="text/javascript">
document.write("Hello World!")
</script>
<noscript>No script!</noscript>

UPD
Вопрос отпадает наткнулся на ответ здесь на форуме.

UpJump 07.02.2011 20:19

Читая Флэнагана наткнулся на незнакомый метод( на стр. 272 если кому интересно).
window.write()

Копал но так и не нашел описания этого метода. Неужели это описка и имелось ввиду window.document.write()?

Aetae 07.02.2011 22:10

UpJump
alert(window.write)

Не зачем рыть горы теории - используй в таких случаях практический подход.))

UpJump 07.02.2011 23:16

все так. так и сделал с самого начала. получается в книге опечатка?
книга - JavaScript Флэнаган 5-е издание. 272 стр.

Aetae 08.02.2011 00:51

Хз, смотреть лень.
Но может быть и так:
write=function(s) {return s}
alert(window.write)

UpJump 08.02.2011 15:10

Так то оно может быть, но в книге явно не создавалось свойства write.
Ладно. Сочтем за опечатку;)

x-yuri 08.02.2011 15:44

Цитата:

Сообщение от UpJump
Так то оно может быть, но в книге явно не создавалось свойства write.

тогда скажи название раздела, а не страницу

UpJump 08.02.2011 16:07

Сенепременно:) . Вот:

Часть вторая(или второй раздел если угодно). Клиентский Javascript
Глава 13. Javascript в веб-броузерах.
13.5.7. Манипулирование в процессе загрузки.

Там с самого начала.

x-yuri 08.02.2011 21:36

Цитата:

Сообщение от javascript: The Definitive Guide, 5th Edition
While a document is being loaded and parsed, JavaScript code in a <script> element can insert content into the document with document.write( ). Other kinds of document manipulation, using DOM scripting techniques shown in Chapter 15, may or may not be allowed in <script> tags.

..

UpJump 08.02.2011 21:45

Ага. Значит все таки опечатка.

UpJump 10.02.2011 13:33

Всем привет! В очередной раз прошу достопочтеннейших участников форума помочь разобраться в очередной загвоздке.:)

Две функции. encodeURIComponent() и decodeURIComponent(). Никак не могу понять где они могут мне пригодиться. Вот к примеру:
var str = "name=value";
alert(encodeURIComponent(str));

получил иную кодировку. В каком случае я могу получить к примеру похожий набор символов которые мне нужно будет в дальнейшем преобразовать через decodeURIComponent()? То есть:
var str = "name%3Dvalue";
alert(decodeURIComponent(str));

Есть ли таблицы символов где можно узнать чему к примеру равно %3D? Вообще необходимо ли оно для дальнейшего изучения веб-программирования в целом? Короче БОЛЬШОЙ ПРОБЕЛ друзья:( . Помогите кто может ссылочкой ценной иль примером добрым:)
UPD
Изучаю по флэнагану. До post-ов и get-ов еще не дошел. Может ответ кроется там?

NoResponse 10.02.2011 13:38

описание для чего оно надо
http://www.w3schools.com/jsref/jsref...icomponent.asp
http://www.w3schools.com/jsref/jsref...icomponent.asp
таблица
http://www.w3schools.com/tags/ref_urlencode.asp

UpJump 10.02.2011 13:41

блин. я ж с английским не в таких теплых отношениях. может что по-русски найдется?

NoResponse 10.02.2011 13:42

тогда так, что б далеко не ходить :)
http://javascript.ru/encodeURIComponent

UpJump 10.02.2011 13:46

От спасибо друг:thanks: . Держи +

UpJump 17.02.2011 21:37

Всем снова привет!:)
Назрел вопрос.
Есть два файла:
1.html:
<frameset rows="*, 75">
	<frame src="about:blank" name="main">
	<frame src="2.html">
</frameset>

2.html
<script>
function go(){
	parent.main.alert(document.f.text.value);
}
</script>

<form name="f" onsubmit="go();return false;">
<input type="text" name="text" size="100">
<input type="button" value="go" onclick="go();">
</form>


В результате у меня 2 фрэйма. никак не разберусь почему не выходит отправить значение, при вводе его в поле, из одного фрэйма в другой.
Выдает что window не имеет такого метода как alert(). Но ведь это не правда:
window.alert();


UPD
Проверил в ie и в лисе все ок. Но в ghrome выдает ошибку.

NoResponse 17.02.2011 22:24

лучше использовать DOM, а не M$
parent.frames['main'].alert(document.forms['f']['text'].value);

UpJump 17.02.2011 22:45

все равно в хроме ноль по массе.
вот упростил задачу.
1.html
<frameset rows="*, 75">
	<frame src="about:blank" name="main">
	<frame src="2.html">
</frameset>

2.html
<script>
if(parent.frames['main'].alert)alert("true");
else alert("false");
</script>

NoResponse 17.02.2011 22:49

ну не знаю тогда,у меня все норм
http://21h.su/tmp/1.html

UPD
проверил, хром ругается если открывать как локальный хтмл (file:///....)

UpJump 19.02.2011 23:48

Да спс. Я уже тоже сообразил:)

Matre 21.02.2011 10:30

Цитата:

Сообщение от Matre (Сообщение 88520)
UpJump

alert(constructor.constructor("a", "return a ||arguments")().callee(true));


делайте выводы

Цитата:

Я уже тоже сообразил
Ну наконец-то.

UpJump 21.02.2011 21:26

Matre, я тебя не понял.

UpJump 21.02.2011 21:49

Всем привет! Разбираюсь с DOM. Почему при первом вызове alert() не видит свойства tagName, но зато при вызове через функцию все ок? Как всегда скромно надеюсь на помощь:)

<script>
try {alert(document.body.tagName);}
catch(e) {alert(e);};

function f(){alert(document.body.tagName);};
</script>

<body>
<button onclick="f();">ok</button>
</body>

PS
Народ можно ли переименовать тему? А то начиналось то все с одного вопроса, а разрослось в ценный для меня ресурс и название темы не соответствует вопросам.

Aetae 21.02.2011 22:00

Потому что никакого body ещё нет. Как видно script идёт выше чем body, а запускается он по мере обработки страницы.

UpJump 21.02.2011 22:03

а ну тогда все ясно. я думал что js запускается уже после запуска html. спасибо Aetae, ты как всегда выручаешь:)

UpJump 22.02.2011 01:23

От спасибо , не знаю правда кому, за замену названия топика:thanks:

UpJump 22.02.2011 17:12

Продолжаю изучение DOM и снова проблема. Почему этот код не работает в Firefox и IE? Проверял только на Ghrome. Неужели браузер не видит текстовый узел?

<body onclick="this.firstChild.nodeValue = 'text'">
</body>


UPD
Проверил узел #text точно существует в Firefox.
<body onclick="this.firstChild.nodeValue = 'text'">
</body>
<script>
var str;
for(i=0;i<document.body.childNodes.length;i++) str+=document.body.childNodes[i]+'\n';
alert(str);
</script>

Aetae 22.02.2011 17:57

<body onclick="document.body.firstChild.nodeValue = 'text';alert(this)">
</body>

UpJump 22.02.2011 18:11

Вот блин.. оказывается в файрфоксе this ссылается на window. В IE это просто объект. Спасибо Aetae, глупый вопрос, еще пока не добрался до обработчиков событий.

Aetae 22.02.2011 19:20

Да не, не глупый. Я вот честно говоря не знаю почему в фф this у body возвращает window.)
<div onclick="this.firstChild.nodeValue = 'text';alert(this)">////
</div>

x-yuri 23.02.2011 12:09

потому что обработчик на window ставится на самом деле, ff такой ff :)
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body onclick="alert([window.onclick,document.body.onclick]);">
</body>
</html>

UpJump 23.02.2011 13:34

Странно.. в чем тогда тут соль?

Этот код тупит только в ff. Вернее возвращает только undefined.
<body onclick="alert(document.body.onclick);">
</body>


Почему здесь событие работает только в ff?
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body onclick="alert(document.body.onclick);">
</body>
</html>

x-yuri 23.02.2011 14:23

лучше вот на таком коде экспериментировать
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body onclick="alert([window.onclick,document.body.onclick]);" style="height: 50px; border: 1px solid red;">
</body>
</html>

в ff обработчик на самом деле назначается window, хоть и прописан для body. Видимо он считает, раз ты такое делаешь, значит хочешь отлавливать клики по всей странице. Похоже на то, что это наследие прошлого

UpJump 24.02.2011 00:20

еще вопрос.
<body onclick="f();" style="height: 50px; width:100px; border: solid black;"></body>
<script>
function f(){
	var str = document.body.style.width;
	str = '50px';
	alert(str);
}
</script>

Почему не срабатывает? alert пишет что str == 50px и все должно быть тип-топ.

Вот другой вариант. Напрямую и все ок.
<body onclick="f();" style="height: 50px; width:100px; border: solid black;"></body>
<script>
function f(){
	document.body.style.width = '50px';
}
</script>

B@rmaley.e><e 24.02.2011 00:57

А с какой радости изменение str должно повлечь изменение document.body.style.width? В JS только объекты копируются по ссылке, примитивы - по значению.

UpJump 24.02.2011 01:21

ясно. спс

UpJump 07.03.2011 18:44

всем привет! назрел вопрос.
<style>
div {
	position:absolute;
	width:100px;
	height:100px;
	background: red;
}
</style>

<script>
function f(){
	var div = document.getElementsByTagName('div')[0];
	div.style.opacity = 0;
	setInterval(function(){div.style.opacity += .1;} , 10);
}
</script>

<body onclick='f();'>
<div></div>
</body>


opacity не увеличивается более чем на 0.1. Вот собсна и не пойму где я заглох?:(

Sweet 07.03.2011 19:19

Вообще, стили - это строки. В итоге opacity получается "0.1.1", это не корректно, поэтому opacity остается "0.1"

UpJump 07.03.2011 19:36

В точку! не подумал, а стоило бы проверить. СПАСИБО!:)


Часовой пояс GMT +3, время: 21:37.