nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 15 Apr 2024 23:57



Reply to topic  [ 48 posts ]  Go to page Previous  1, 2, 3, 4  Next
Отладка JS в Opera 
Author Message
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Как это нету, когда есть ;)


17 Dec 2014 05:11
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Reply with quote
Post 
jdigreze wrote:
Как это нету, когда есть ;)


Текст1 и Текст3 в фаерфоксе не сработали...

_________________
:dj: https://mastodon.social/@Shaos


17 Dec 2014 06:35
Profile WWW
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
И то правда. :roll:
Странная штука, этот фраерфокс.


17 Dec 2014 07:26
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Reply with quote
Post 
jdigreze wrote:
И то правда. :roll:
Странная штука, этот фраерфокс.


Фичи HTML не работающие в Фаерфоксе считаются хаками :)

_________________
:dj: https://mastodon.social/@Shaos


17 Dec 2014 08:04
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Фичи HTML не работающие в Фаерфоксе считаются хаками :)

Хорошо хоть не каками... 8) А вот я не знаю, как в ваших фраерфоксах, но мой,
подлюка, начал проверять правописание в iframe ! :o

Image

И я не знаю как проверку правописания в iframe отключить... :(

В обычном текстовом окне это делают так:
Code:
<textarea spellcheck="false">
...
</textarea>


А вот в iframe у меня что-то не прокатывает...

Code:
document.getElementById('txtframe').contentWindow.document.spellcheck='false';



PS. В этих наших интернетах пишут:
Quote:
An IFrame WILL "trigger" the spell checker (if it has content-editable set to true) just as a textfield, at least in Chrome.

не понел...

_________________
iLavr


Last edited by Lavr on 17 Dec 2014 12:02, edited 1 time in total.



17 Dec 2014 10:20
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
А если так:
Code:
document.getElementById('txtframe').contentWindow.document.body.spellcheck='false';
?


17 Dec 2014 11:59
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
А если так:
Code:
document.getElementById('txtframe').contentWindow.document.body.spellcheck='false';
?

Проверил эти варианты... я думаю <body> это тоже не textarea... не идёт.

Но! У iframe:
Code:
numframe.contentWindow.document.designMode = 'on';

_________________
iLavr


17 Dec 2014 12:08
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Странно, что не срабатывает. По документации body имеет свойство spellcheck, которое распространяется на все элементы текстового ввода. Dragonfly в опере подтверждает наличие оного. Позже попробую проверить у себя.


17 Dec 2014 20:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
Странно, что не срабатывает. По документации body имеет свойство spellcheck, которое распространяется на все элементы текстового ввода.

Но вот почему-то не срабатывает... :( Хотя я попытался применить .spellcheck='false' во всех возможных вариациях.

Lavr wrote:
Есть у меня подозрение, что шибко длинные строки портят формат в iframе...

А вот это подозрение не оправдалось...
И причина сбоя форматирования в iframе оказалась куда как более запутанной!

Как было выясненно, iframе, втаскивая текстовый документ, присваивает ему свойства форматированного
текста, обрамляя:
Code:
<pre>
...
</pre>

Но в этом ассемблерном файле - adventure.asm - оказались метки со взятием старшего и младшего
байта адреса:
Code:
  adc    #<spawn_points
  sta    $2
  lda    #0
  adc    #>spawn_points
  sta    $3

Само по себе это тоже ничего особого не представляет, но по редкому стечению обстоятельств
в программе оказалась метка:
Code:
*=512
frame_buffer:

Как мы выяснили из текста эмулятора, ' *= ' - это, видимо, аналог ' EQU '.

И вот тут в тексте ассемблерной программы возникает комбинация, которая напрочь сносит голову iframе:
Code:
    lda    #<frame_buffer
    sta    $2
    lda    #>frame_buffer
    sta    $3

Видимо,
Code:
<frame...

имеет для iframе какой-то приоритет, он убирает свои
Code:
<pre>
...
</pre>

и начинает ещё делать в коде какие-то идиотские и непонятные вставки, видимо правильные,
с его точки зрения, но форматирование рушится напрочь... :(
Code:
  lda    #<frame_buffer sta="" $2="" lda="" #="">frame_buffer


Как только я заменил метку на:
Code:
    lda    #<screen_frame_buffer
    sta    $2
    lda    #>screen_frame_buffer
    sta    $3

всё пошло совершенно нормально!

И, кстати, еще один эффект: все эти несколько неудачные операторы взятия старшего и
младшего байта адреса - ' < ' и ' > ' iframе при загрузке текста заменяет на ' &lt; ' и ' &gt; ' ,
поэтому при возврате в программу ассемблерного текста, пришлось делать обратную замену:
Code:
 content = content.replace( /&lt;/gm, '<' );
 content = content.replace( /&gt;/gm, '>' );


Больше пока "косяков" от iframе не обнаружил...

_________________
iLavr


18 Dec 2014 08:08
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Блин... этот JavaScript в браузерах - 7 раз отрежь, и узнаешь, работает оно так или нет... :(

Ещё одна засада: в Opera принципиально от разработчиков не работают :
Code:
window.onbeforeunload = function(){...};
window.onunload = function(){...};


То есть, как факт, отсутствует событие закрытия окна.

По каким-то ещё другим признакам - можно отследить событие закрытия окна?

А то надо сообщить вызывающему окну, что PopUp окно закрыто без передачи кода,
нажатием на [X].

_________________
iLavr


18 Dec 2014 15:07
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
А видимо никак. И скорее всего, так же защита от хака.
У меня, кстати, проверка орфографии не приключилась:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тег IFRAME, атрибут src</title>
<script type="text/javascript">
<!--
function oclck () {
var linkedFrame = document.getElementById("frame");
var content = linkedFrame.contentWindow.document.body.innerText;
alert(content);
}

function ounl() {
alert("go out now?");
}
-->
</script>
</head>
<body onunload="oclck()">
<p align="center">
<iframe id="frame" src="./gamelife.asm" width="380" height="260"></iframe>
<br>
<input type="button" onclick="ounl()" value="press" />
</p>
</body>
</html>



19 Dec 2014 08:50
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
А видимо никак. И скорее всего, так же защита от хака.

Да - пишут, что это фича разработчиков, чтобы исключить очередь всплывающих без
желания пользователя окон...

Но метод есть... правда мне не нравится, поскольку он со стороны вызывающего окна,
и неудобный, как удаление гланд через анус... :(
Quote:
A solution to get around this problem is to start a timer and check the
closed property of the child window every second and clear the timer
when the window gets closed.

Here is the code:
Code:
var win = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');

var timer = setInterval(function() {
    if(win.closed) {
        clearInterval(timer);
        alert('PopUp is closed');
    }
}, 500);


jdigreze wrote:
У меня, кстати, проверка орфографии не приключилась:

Это потому как нет:
Lavr wrote:
У iframe:
Code:
numframe.contentWindow.document.designMode = 'on';

А с ним, всё как и у меня:

Image

Если:
Code:
function ounl() {
var numframe = document.getElementById("frame");
numframe.contentWindow.document.designMode = 'on';
alert("go out now?");
}


В противном случае и у меня нет проверки. Но без designMode = 'on' я не могу выделить
из скрипта весь текст, а у меня он - выделяется автоматически:

Image

И, кстати, у меня не работает:
Code:
function oclck () {
var linkedFrame = document.getElementById("frame");
var content = linkedFrame.contentWindow.document.body.innerText;
alert(content);
}

По выходу переменная content - undefined.

Но я думаю, не бороть больше это подчеркивание, оно ничему не мешает, а метод - работает,
файл грузится с локального диска, хотя везде пишут, что JS это не умеет.

Просто хотел ещё для удобства, если PopUp окно загрузки закрыто через [X], посылать сообщение,
что *.asm-программа не загружена...

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

_________________
iLavr


19 Dec 2014 11:30
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Ещё одна засада: в Opera принципиально от разработчиков не работают :
Code:
window.onbeforeunload = function(){...};
window.onunload = function(){...};

То есть, как факт, отсутствует событие закрытия окна.

Тоже на проверку - не совсем правда... есть в Opera событие onunload,
только срабатывает довольно странно...

Я решил закрывать окно загрузки программы при потере им фокуса, чтобы
не маячило, если не закрыли и не скопировали код программы.
Code:
window.onblur = function(){self.close();};

так вот по этому self.close(); неожиданно начала срабатывать в Opera функция,
оставленная для Фраерфокс:
Code:
window.onunload=function(){
...
}



Всё ж закрыл этот вопрос через setInterval(function()...):
Code:
     var ua = navigator.userAgent;
  if(ua.search(/Opera/) > 0){
     var timer = setInterval(function() {
      if(w.closed) {
         clearInterval(timer);
         // alert('PopUp is closed');
        if(document.getElementById( "code" ).value == ""){
           document.getElementById( "code" ).value = "hlt ;--- File loading error..."
           document.getElementById('messages').innerHTML="File is not loaded. Try to load it manually!<br />";
           disableButtons();
          }
        }
     }, 500);
  }


Сколько времени отрывает всякая бестолковая дрянь, собственно, от самогО полезного дела... :(

_________________
iLavr


20 Dec 2014 16:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Я решил закрывать окно загрузки программы при потере им фокуса, чтобы
не маячило, если не закрыли и не скопировали код программы.
Code:
window.onblur = function(){self.close();};

так вот по этому self.close(); неожиданно начала срабатывать в Opera функция,
оставленная для Фраерфокс:
Code:
window.onunload=function(){
...
}

Сколько времени отрывает всякая бестолковая дрянь, собственно, от самогО полезного дела... :(


Случилась ещё одна "бестолковая дрянь": в Opera и Фраерфокс, оказывается,
Code:
window.onblur = ...;

Работают по разному... В Opera вызывается при потере фокуса окном, в Фраерфоксе - при потере
фокуса любым из элементов документа... :(

Кто-нибуть знает надежный код отследить потерю фокуса всем окном, т.е. когда всё всплывающее
окно становится неактивным?

_________________
iLavr


23 Dec 2014 10:57
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Работают по разному... В Opera ... , в Фраерфоксе

Во блин... "кроссплатформенность"... блин... :o

Проверил я свой код и прототипы с работы "онлайн" на всех доступных браузерах.
Под ХР случилась только пара непоняток - в современной версии Опера случайное
сочетание ":-0" на экране Опера заменила на смайлик типа :P .
Гугл-Хром взял и без спросу перевёл нагло надписи на кнопка на русский язык! :lol:

А вот когда я стал тестировать на машине с Windows-7 под её родным IE - тут был
полный шок! :o
Все "прототипы" в нём почему-то просто не работают напрочь! Вплоть до того, что
экранные формы текст-боксов и т.д. искажаются до неузнаваемости!
Сам код JS - просто не исполняется!
А в моём собственном экземпляре - всё работает как из пушки... :o

Ну я подумал, что Ослик IE виноват... и поскольку у меня с собой на флешке всегда
есть портативная Опера-9.64, я запустил и её под Windows-7 - а в ней - практически
аналогичный эффект!

Windows-7 - обычный, хоум эдишн... не 64. :(


PS. Похоже, что какая-то ерунда со стилями CSS происходит. А файл js, похоже, что просто не загружается...

_________________
iLavr


27 Dec 2014 09:47
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 48 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.