Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] JS в горящей лисичке(Mozilla Firefox) не работает.... (http://forum.oszone.net/showthread.php?t=103204)

BASSON_XVI 19-03-2008 21:22 763879

JS в горящей лисичке(Mozilla Firefox) не работает....
 
Вообщем проблема в чом недавно стал изучаь ЯС и на ткнулся на такую праблему во всех браузерах этот ЯС работает а в Mozilla Firefox на пашет что я не так делаю??
Вот пример:
<DIV ID = "error"></DIV>
<script type="text/javascript">document.all.error.innerHTML = "Ошибка"</script>
Проверял в ИЕ 7 Макстоне Опире 9 там пашет а вот в лисичке отказываеться.....

Strange_V 19-03-2008 21:31 763888

Пользуйтесь document.getElementById('error')

BASSON_XVI 19-03-2008 21:56 763906

Error:Недопустимое число аргументов или присвоение значения свойства
Простите если не доганяю:
<script type="text/javascript">document.getElementById("error")="Ошибка";</script>

Strange_V 19-03-2008 22:10 763916

BASSON_XVI,
HTML код:

<div id='error'>_</div>
<script type="text/javascript">document.getElementById('error').innerHTML='Ошибка';</script>


BASSON_XVI 19-03-2008 22:13 763919

Спасибо большое! Проблема решена))....

BASSON_XVI 20-03-2008 14:48 764297

Ну вот вроде с иннер разобрался а вот соутер не могу...Вот это не работает в мозиле, а в других прекрасно работает:
HTML код:

document.getElementById("popup").outerHTML

BASSON_XVI 24-03-2008 09:49 766552

Мне ктонить поможет с оутерХТМЛ в мозиле?? ^

Vlad Drakula 24-03-2008 10:12 766566

BASSON_XVI
оутерХТМЛ - мозиле не работает

BASSON_XVI 24-03-2008 15:39 766800

Vlad Drakula, Э а как мне тогда быть, как мне заменить содержимое вместе с контейнером <div>...</div> на <div style=error>...</div>... :(

Strange_V 24-03-2008 16:02 766812

Вы б сказали сразу чего хотите добиться..
После style= должны идти конкретные свойства стиля, например style="color:#f00;"
Задать можно так:
HTML код:

<div id="error">123456</div>
<script type="text/javascript">document.getElementById('error').style.color='#f00';</script>


BASSON_XVI 24-03-2008 16:35 766833

Все спасибо...Просто в Опере и ИЕ можно было использовать оутерХТМЛ... учтем...

BASSON_XVI 25-03-2008 19:00 767576

ЭЭЭ простите за тупость.. Просто не могу я понять это не логичный JS. У меня вот такой вопрос. В слой выводяться сообщения иннертХТМЛ или оутерХТМЛ. Собсно сам вопрос как туда подставлять содержимое файла скажем del.html в иннертХТМЛ :)

Coutty 25-03-2008 19:49 767610

Насчёт включения html точно не знаю (фрэймы не подойдут?), но для js можно использовать такой код:

Код:

function include_js(file) {
    var html_doc = document.getElementsByTagName('head')[0];
    js = document.createElement('script');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', file);
    html_doc.appendChild(js);
    js.onreadystatechange = function () {
        if (js.readyState == 'complete') {
            // тут нужная вам функция. Например eval().
            // Соответственно, в самом js-файле должно быть что-то вроде
            // var='<b>содержимое в html-формате</b>';
            // А эту переменную потом вставить в нужное место.
            // Может быть я делаю много лишних движений,
            // но думать сейчас мне не очень хочется:)
            // Вариант другой: просто html-файл
            // который присваивается переменной - не проверял, мб и не будет работать.
        }
    }
    js.onload = function () {
      // те же самые строчки кода (в разных браузерах по-разному реализовано)
    }
    return false;
}

Потом вызов функции include_js('nya.js');

bruder 26-03-2008 00:08 767746

Человек пытается ограбить чью то страницу :). Если конечно страницу в пределах своего домена то добраться можно с помощью аякса, о чем сверху Coutty упамянул

Код:

       
 <SCRIPT LANGUAGE="JavaScript">
  <!--
        var object;
var req = (window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
req.open("GET", "ваша,страница.html",true);
req.onreadystatechange = function () {
if (req.readyState == 4) {
var txt = req.responseText;
alert(txt);
}
};
req.send(null);
  //-->
  </SCRIPT>

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

Vlad Drakula 26-03-2008 02:34 767785

bruder
все прекрасно делается, и даже кросссерверный скриптинг устроить не так сложно!

bruder 26-03-2008 03:10 767788

Цитата:

Цитата Vlad Drakula
все прекрасно делается, и даже кросссерверный скриптинг устроить не так сложно! »

код в студию! Я всегда люблю поучится чему нибудь полезному. :) (если конечно это не JSON)

Vlad Drakula 26-03-2008 11:08 767931

bruder
код Coutty, загружает JS скрипты с любого домена
если немного подтюнить то можно передавать при загрузке срипта гет параметры, тем самым псредавая данные из JS на другой домен.

bruder 26-03-2008 11:17 767941

надо еще уговорить владельца чтобы он написал js чтоб ктото его страницу грабил. Я думал способ будет оригинальней

BASSON_XVI 26-03-2008 15:28 768124

я вообщето не хотел не кого грабить... У меня есть вот такая функция:
HTML код:

function popup_user_del(){
swidth = screen.availWidth / 2 - 150
sheight = screen.availHeight / 2 - 180
document.getElementById("popup").outerHTML = "<DIV ID ='popup' Style = 'position:absolute; left:" + swidth + "; top:" + sheight + ";width:300; z-index:0'><table border=0 bordercolor=black cellspacing=0 cellpadding=0>...................<table></DIV>";
}

Просто не удобно все это редактировать когда в одной страке :( вот я и спрашиваю как мне можно с хтмл страницы считать теги и вставить в оутерХТМЛ????

vadimiron 26-03-2008 15:38 768134

Цитата:

Цитата BASSON_XVI
вот я и спрашиваю как мне можно с хтмл страницы считать теги и вставить в оутерХТМЛ »

Есть же свойство innerHTML

BASSON_XVI 26-03-2008 17:06 768211

vadimiron, и что ка мне это поможет я знаю как работает инннер и оутер! Я вообще то не про это спрашиваю....

bruder 26-03-2008 17:22 768232

привет. Думаю нужно для хорошего стиля разграничить css javascript и html.(извините пример большой). Вообще вынести в отдельные файлы а не как у меня. А в html останется только див. В яваскрипте присуждать только изменяемые свойства(положение на странице). Разбить длинный стринг на несколько частей.

PS я не смог сделать setAttribute(), почемуто не пашет. Кто знает почему?

Код:

<html>
 <head> 
  <style type="text/css">
        #popup{
                display:none;
                position:absolute;               
                width:300px;
                height:360px;
                z-index:0;
        }
        #popup table{
                width:100%;
        }
        #popup table th{
                background:#330099;
                color:#fff;
        }       
        #popup table td{
                background:#3399CC;
                color:#fff;
        }       
  </style>
  <script language="javascript">
  <!--
        function popup_user_del(){
                var popup = document.getElementById("popup");
                  popup.style.display = "block";
                        popup.style.left = (screen.availWidth / 2 - 150)+"px";               
                        popup.style.top = (screen.availHeight / 2 - 180)+"px";
                var tab =  "<table border=0 cellspacing=1 llpadding=0>"
                        tab += "<tr><th colspan='2'>Удаление пользователя</th></tr>";
                        tab += "<tr><td>ФИО</td><td>Аноним</td></tr>";
                        tab += "<tr><td>Возраст</td><td>80</td></tr>";
                        tab += "</table>";
                        tab += "<a href='javascript:void(0)' onclick='popup_close()'>Закрыть</a>"
                popup.innerHTML =  tab;
        }

        function popup_close(){
                document.getElementById("popup").style.display = "none";
        }
  //-->
  </script>
 </head>
 <body>
  <a href="#" onclick="javascript: popup_user_del();">Покажи</a>
  <div id="popup">       
  </div>
 </body>
</html>


BASSON_XVI 26-03-2008 20:39 768407

Спасибо тебе но наверно ты не понял корень проблемы. Виш какая вещ я уже органицзовал вылет подтверждения. Мне просто хотелось бы что бы в иннерХТМл ну или в переменную счтитать хтмл код с другой страницы. Я хочю отдельно создать del_user.html создать popup.js и index.html так вот в индекс прописать онклик для запуска функции в popup и вот в popup мне надо считать данные с del_user в переменную и вывести через иннерХТМЛ в index. Так вот вызов popup я осуществи функцию в нем написал. Вы мне подскажите как сичатать с del_user данные в переменную и все. Терь вроде доходчиво обьяснил :)

bruder 26-03-2008 21:36 768448

Одно из решений - использовать iframe. Смотри как получается. Есть страница qu.html. В ней единственный див
Код:

<HTML>
 <HEAD>
 </HEAD>
 <BODY>
 <DIV ID="aa">
        Site N2
  </DIV> 
 </BODY>
</HTML>

на другой странице имеем iframe, делаем его 1x1 пиксель, чтоб было интересней. Не надо делать display:none, потому как некоторые браузеры его вообще не грузят. Получает содержимое страницы как DOM и вуаля

Код:

<HTML>
 <HEAD>
 </HEAD>
 <BODY>
 <iframe src="qu.html" width="1" height="1" id="editor" onload="my();"></iframe>
  <SCRIPT LANGUAGE="JavaScript">
  function my(){
  a = document.getElementById("editor").contentWindow.document.getElementById("aa");
  alert(a.innerHTML);
  }
  </SCRIPT>
 </BODY>
</HTML>


Гдето я читал давно что с iframami не все браузера дружат, но не помню в каком смысле. Поддерживают iframe даже древние. Если кто может выложить интереснее решение, тому респект, будет интересно посмотреть

BASSON_XVI 26-03-2008 23:23 768562

Спасибо тебе bruder. Я просто почемуто думал что в яваскрипет есть что то типа include как в php взял да вызвал страницу по команде в нужное место и все.. А оно вот как все мудренно... Увы но я не люблю фреймы :(

bruder 26-03-2008 23:31 768566

тады обратись еще раз к Coutty. Там действительно чисто яваскрипт решение, по моему неплохое.

Coutty 27-03-2008 09:01 768704

А мне уже кажется, что не такое уж и хорошее:)
Вот представьте - кликнул пользователь не туда, надо выдать окошко предупреждения. Скажем, с моим инетом на запрос через заграничный прокси уйдёт секунд 10. И всё это время я буду ждать, пока загрузится страница-предупреждение?
Там надо-то пару строчек html, чтобы окошко выдать. Зачем же его с внешнего файла брать?

BASSON_XVI 27-03-2008 09:51 768739

Э}{ B6I MEH9| ПЕРЕУБЕДИЛИ :)
Но все равно твой Coutty кодик мне пригодиться да и твой bruder тоже спасибо вам ребята. Пока буду писать дальше. Теперь единственное что меня останавливает от релиза моей CMS так это только wysiwyg редактор кторый у меня тоже надо дороботать, но это позже а пока БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО :)

BASSON_XVI 04-05-2008 08:02 794259

вообщем я тут опять со своими всплывающими окошками... вообщем вот так я определяю ширину и высоту экрана и центрирую окошко:
Код:

swidth = screen.availWidth / 2 - 150
sheight = screen.availHeight / 2 - 180

Проблема 1: аваи определяет разрешение экрана а мне надо определить длину страницы, длина её зависит от контента, тоесть когда ты прокрутил страницу до конца и вызвал окошко оно появиться в верху.. Собсно как мне узнать в какой части страницы находиться пользователь что бы выводить окошко ему под нос...
Проблема 2: аваи вооще не пашет под мозилой.(или у меня не пашет.)
И ешё можно ли пару ссылочек дать на спецификацию мозилы и какойнить хороший справочник по js а то полазал по нету и не чего не нашол стоешего...

Coutty 04-05-2008 09:08 794276

// Эти определяют размер доступной части документа (но без прокрутки страницы)
sheight = document.body.clientHeight;
swidth = document.body.clientWidth;

Потом вывести <div style='position:fixed; top:" + (sheight * 0.4) + "; left: " + (swidth * 0.4) + "'>мур-мур-мур</div>
Но position:fixed вроде бы не работает в IE6 - хз...

Учебник по JS от разработчиков стандартов:
http://www.w3schools.com/js/default.asp
Там же и указывается в каких браузерах это будет работать.

BASSON_XVI 04-05-2008 15:58 794574

Вставил проверил все тоже самое что и с моим методом... Также прокручиваеш в низ страницу тыкаеш на кнопку и вуаля появляеться окошко в верху... что делать??? :(

Coutty 04-05-2008 16:24 794588

Не знаю, как вы пробуете... Вот полный пример:
HTML код:

<html>
<head>
<title>Заголовок</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<script>
function showDiv() {
  a = document.getElementById('hid').style;
  a.display = 'inline';
  a.top = document.body.clientHeight * 0.4;
  a.left = document.body.clientWidth * 0.4;
}
</script>
</head>
<body>
Сюда надо написать много-много рыбного текста, но для экономии трафика я его опускаю.
<input type='button' value='Воткни курсор в меня' onclick='showDiv()' />
<div id="hid" style='display:none; position:fixed; width:400; height:300; background-color:red'>Какое-то сообщение</div>
</body>
</html>

Тыкаете в кнопку и красный слой с "каким-то сообщением" появляется в строго заданном месте на экране.
Проверил в опере 9.23 и фф 1.5

bruder 04-05-2008 16:46 794609

может он такое имел ввиду

Код:

<HTML>
 <HEAD> 
  <SCRIPT LANGUAGE="JavaScript">
  <!--
        function a(){
                sheight = document.body.scrollHeight-(document.body.clientHeight/2);
                swidth = document.body.clientWidth/2;
                var s = document.getElementById("ko");
                s.style.top = sheight;
                s.style.left = swidth;
                s.style.display = "block";
        }
  //-->
  </SCRIPT>
 </HEAD>
 <BODY>
START<BR>.....много <br>

<div id="ko" style="position:absolute; top:0; left: 0;display:none;background-color:red">Hallo</div>
<A HREF="javascript:a();">dfgdfdfg</A>
 </BODY>
</HTML>

надо еще везде половину высоты и ширины дива вычесть

BASSON_XVI 04-05-2008 17:13 794625

Гм я наверно не могу правильно обьяснить но bruder что то близко.. просто мне слой надо центровать именно в той части страницы в которую сейчас пользователь спроматривает... вот вроде правильно обьяснил..

BASSON_XVI 04-05-2008 17:53 794644

Вообщем можно как нить узнать скольо пикселей пользователь уже прокрутил скролингом от верха или низа???

bruder 04-05-2008 18:00 794649

действительно не въехал в суть вопроса :)

Код:

<HTML>
 <HEAD> 
 </HEAD>
 <BODY>
  <HTML>
 <HEAD> 
  <SCRIPT LANGUAGE="JavaScript">
  <!--
        function a(){
                height = self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
                height = height + document.body.clientHeight/2;
                width = document.body.clientWidth/2;
                var s = document.getElementById("ko");
                s.style.top = height;
                s.style.left = width;
                s.style.display = "block";
        }
  //-->
  </SCRIPT>
 </HEAD>
 <BODY>
START<BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><A HREF="javascript:a();">dfgdfdfg</A><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br><BR><br>

<div id="ko" style="position:absolute; top:0; left: 0;display:none;background-color:red">Hallo</div>
<A HREF="javascript:a();">dfgdfdfg</A>
 </BODY>
</HTML>
 </BODY>
</HTML>


BASSON_XVI 04-05-2008 18:13 794656

bruder, вооо спасибо работает сразу мне надо было так написать :)) :oszone:

Coutty 04-05-2008 18:56 794678

Хм... И чем этот результат отличается от того, что я предложил? Также отображается в том месте экрана, где требуется. Разве только я не стал отцентровывать - оставил на вашу совесть:)

bruder 04-05-2008 19:07 794682

а у меня почемуто внизу только отображается. Если все пашет, прошу убрать мои решения, наверно проглядел гдето ....

-------------------------------------

действительно в ff пашет, в ие нет, но думаю можно доработать. А я в IE в первую очередь тестировал, сами понимаете преимущество на рынке. Так что извиняюсь :)

Coutty 04-05-2008 19:15 794686

bruder, твоё в №36 пашет точно. В №33 не посмотрел.
Но убирать не надо. Альтернатива всегда должна быть :)

schumi 16-03-2009 17:42 1065616

Подскажите, пожалуйста, как заставить работать в Firefox этот скрипт:
Код:

<SCRIPT language=Javascript1.2>
<!-- var message='нехорошо воровать!!'; 
function click(e)
{if (document.all)
{if (event.button == 2)
{alert(message);return false;}}
if (document.layers)
{if (e.which == 3) {alert(message);return false;}}}
if (document.layers)
{document.captureEvents(Event.MOUSEDOWN);}
document.onmousedown=click; // --> </SCRIPT>



Время: 00:13.

Время: 00:13.
© OSzone.net 2001-