
Отладка JS в Opera
Moderator: Shaos
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Текст1 и Текст3 в фаерфоксе не сработали...jdigreze wrote:Как это нету, когда есть
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Хорошо хоть не каками...Shaos wrote:Фичи HTML не работающие в Фаерфоксе считаются хаками

подлюка, начал проверять правописание в iframe !


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

В обычном текстовом окне это делают так:
Code: Select all
<textarea spellcheck="false">
...
</textarea>
Code: Select all
document.getElementById('txtframe').contentWindow.document.spellcheck='false';
PS. В этих наших интернетах пишут:
не понел...An IFrame WILL "trigger" the spell checker (if it has content-editable set to true) just as a textfield, at least in Chrome.
Last edited by Lavr on 17 Dec 2014 12:02, edited 1 time in total.
iLavr
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
А если так:
?
Code: Select all
document.getElementById('txtframe').contentWindow.document.body.spellcheck='false';
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Проверил эти варианты... я думаю <body> это тоже не textarea... не идёт.jdigreze wrote:А если так:?Code: Select all
document.getElementById('txtframe').contentWindow.document.body.spellcheck='false';
Но! У iframe:
Code: Select all
numframe.contentWindow.document.designMode = 'on';
iLavr
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Но вот почему-то не срабатывает...jdigreze wrote:Странно, что не срабатывает. По документации body имеет свойство spellcheck, которое распространяется на все элементы текстового ввода.

А вот это подозрение не оправдалось...Lavr wrote:Есть у меня подозрение, что шибко длинные строки портят формат в iframе...
И причина сбоя форматирования в iframе оказалась куда как более запутанной!
Как было выясненно, iframе, втаскивая текстовый документ, присваивает ему свойства форматированного
текста, обрамляя:
Code: Select all
<pre>
...
</pre>
байта адреса:
Code: Select all
adc #<spawn_points
sta $2
lda #0
adc #>spawn_points
sta $3
в программе оказалась метка:
Code: Select all
*=512
frame_buffer:
И вот тут в тексте ассемблерной программы возникает комбинация, которая напрочь сносит голову iframе:
Code: Select all
lda #<frame_buffer
sta $2
lda #>frame_buffer
sta $3
Code: Select all
<frame...
Code: Select all
<pre>
...
</pre>
с его точки зрения, но форматирование рушится напрочь...

Code: Select all
lda #<frame_buffer sta="" $2="" lda="" #="">frame_buffer
Code: Select all
lda #<screen_frame_buffer
sta $2
lda #>screen_frame_buffer
sta $3
И, кстати, еще один эффект: все эти несколько неудачные операторы взятия старшего и
младшего байта адреса - ' < ' и ' > ' iframе при загрузке текста заменяет на ' < ' и ' > ' ,
поэтому при возврате в программу ассемблерного текста, пришлось делать обратную замену:
Code: Select all
content = content.replace( /</gm, '<' );
content = content.replace( />/gm, '>' );
iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Блин... этот JavaScript в браузерах - 7 раз отрежь, и узнаешь, работает оно так или нет...
Ещё одна засада: в Opera принципиально от разработчиков не работают :
То есть, как факт, отсутствует событие закрытия окна.
По каким-то ещё другим признакам - можно отследить событие закрытия окна?
А то надо сообщить вызывающему окну, что PopUp окно закрыто без передачи кода,
нажатием на [X].

Ещё одна засада: в Opera принципиально от разработчиков не работают :
Code: Select all
window.onbeforeunload = function(){...};
window.onunload = function(){...};
По каким-то ещё другим признакам - можно отследить событие закрытия окна?
А то надо сообщить вызывающему окну, что PopUp окно закрыто без передачи кода,
нажатием на [X].
iLavr
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
А видимо никак. И скорее всего, так же защита от хака.
У меня, кстати, проверка орфографии не приключилась:
У меня, кстати, проверка орфографии не приключилась:
Code: Select all
<!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>
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Да - пишут, что это фича разработчиков, чтобы исключить очередь всплывающих безjdigreze wrote:А видимо никак. И скорее всего, так же защита от хака.
желания пользователя окон...
Но метод есть... правда мне не нравится, поскольку он со стороны вызывающего окна,
и неудобный, как удаление гланд через анус...

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: Select all
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: Select all
numframe.contentWindow.document.designMode = 'on';

Если:
Code: Select all
function ounl() {
var numframe = document.getElementById("frame");
numframe.contentWindow.document.designMode = 'on';
alert("go out now?");
}
из скрипта весь текст, а у меня он - выделяется автоматически:

И, кстати, у меня не работает:
Code: Select all
function oclck () {
var linkedFrame = document.getElementById("frame");
var content = linkedFrame.contentWindow.document.body.innerText;
alert(content);
}
Но я думаю, не бороть больше это подчеркивание, оно ничему не мешает, а метод - работает,
файл грузится с локального диска, хотя везде пишут, что JS это не умеет.
Просто хотел ещё для удобства, если PopUp окно загрузки закрыто через [X], посылать сообщение,
что *.asm-программа не загружена...
В принципе, весь процесс можно сделать без всплывающего окна - на полном автомате, но останавливаю
окно открытым, чтобы можно было убедиться, что загружатся то, что надо.
iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Тоже на проверку - не совсем правда... есть в Opera событие onunload,Lavr wrote:Ещё одна засада: в Opera принципиально от разработчиков не работают :То есть, как факт, отсутствует событие закрытия окна.Code: Select all
window.onbeforeunload = function(){...}; window.onunload = function(){...};
только срабатывает довольно странно...
Я решил закрывать окно загрузки программы при потере им фокуса, чтобы
не маячило, если не закрыли и не скопировали код программы.
Code: Select all
window.onblur = function(){self.close();};
оставленная для Фраерфокс:
Code: Select all
window.onunload=function(){
...
}
Всё ж закрыл этот вопрос через setInterval(function()...):
Code: Select all
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
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Случилась ещё одна "бестолковая дрянь": в Opera и Фраерфокс, оказывается,Lavr wrote:Я решил закрывать окно загрузки программы при потере им фокуса, чтобы
не маячило, если не закрыли и не скопировали код программы.так вот по этому self.close(); неожиданно начала срабатывать в Opera функция,Code: Select all
window.onblur = function(){self.close();};
оставленная для Фраерфокс:Сколько времени отрывает всякая бестолковая дрянь, собственно, от самогО полезного дела...Code: Select all
window.onunload=function(){ ... }
Code: Select all
window.onblur = ...;
фокуса любым из элементов документа...

Кто-нибуть знает надежный код отследить потерю фокуса всем окном, т.е. когда всё всплывающее
окно становится неактивным?
iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Во блин... "кроссплатформенность"... блин...Lavr wrote:Работают по разному... В Opera ... , в Фраерфоксе

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

Гугл-Хром взял и без спросу перевёл нагло надписи на кнопка на русский язык!

А вот когда я стал тестировать на машине с Windows-7 под её родным IE - тут был
полный шок!

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

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

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