Страницы: 1
Представляется, что это можно сделать как минимум двумя способами. Но надо знать структуру фреймов (вложенность, соседство и т.п.). Первый способ - через свойство parent. добраться до общего корневого узла, а затем спуститься в требуемый фрейм используя свойство childNodes.
Второй метод связан с использованием глобального объекта window и его свойства frames
В чем может быть причина аномалии?
Firefox/3.0.14/
1. Имеется xhtml форма с элементами xForms (input и output) - работает отлично в Firefox.
2. если создавать идентичную форму средствами XSLT (повторяя весь текст из п.1) то не работают элементы xForms (input и output).
Перепробовал все варианты xsl:output. Firebag показывает, что отсутствует value в поле input.
вот текст xml-файла (это просто пустышка)
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type= "text/xsl" href="exp_2.xsl" ?> <exp>tttt </exp>
exp_2.xsl файл содержит только один корневой шаблон (<xsl:template match="/">, текстуально не связанный с xml-файлом , который создает ту же форму из п.1. (см.код):
[code]<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xf="http://www.w3.org/2002/xforms"
encoding="windows-1251">
<head>
<title>Работа XForms из xhtml </title>
<xf:model>
<xf:instance xmlns="">
<data>
<YouName/>
piontr
А если добавить ещё один элемент?
И вообще не понятно, что этот код делает. Сначала видим три элемента, потом - два, третий пропадает куда-то.
Какую задачу пытались решить?
Это практически Ваша задача с использованием функции
function showHide(id,textWhenHidden,textWhenVisible)
1.Вместо того, чтобы создавать неоднородность за счет использования id (представьте, что эти структуры генерируются на фазе исполнения, где контролировать id практически невозможно.
2.В исходной задаче сочетание <p> и следующего за ним <span>, мягко выражаясь, не вполне корректно, так как <span> всегда окажется на новой строке после </p>.Поэтому в задаче эти структуры заменены на div, с вложением нескольких spam-ов.
3. Задача которая рассмотрена в примерах может быть сформулирована следующим образом:
Написать код, который работает со структурами, подобными пунктам меню. При этом фиксировать, какой пункт выбран (сообщение alert с контентом этого элемента (не id)) и что
Вопрос оказался актуальным и пришлось сесть за написание кода, хотя этим мне
приходиться заниматься крайне редко. Я не ставил перед собой цель получить
универсальный код обработки кликов для любого браузера. Приведенные коды
следует считать концептуальным подходом, как направление для дальнейших исследований.
Решая эту задачу с использованием DOM, пришлось столкнуться с тем, что IE и эти
стандарты игнорирует (как и многие другие).
Вот эти коды:
<html>
<head>
<title>Пример кода, который прекрасно работает в FF</title>
<link rel="stylesheet" type="text/css" href="ex.css"/>
</head>
<body>
<script language="JavaScript" type="text/javascript">
function oneclick(elem)
{
var x1=elem.parentNode.childNodes;
alert('идет обработка узла '+x1.item(3).textContent);
if (elem.textContent=='+')
{elem.textContent='-'
x1.item(4).className='cl';
x1.item(5).className='op';
}
else
{elem.textContent='+'
x1.item(5).className='c
однако при многослойных структурах - возникает проблема.
Вы про перехват\просачивание события? event.stopPropagation(); event.cancelBubble = true; ...
Да и вообще для решения задачи скрытия\раскрытия блоков, какая была описана выше, не стоит думать сильно о DOM, узлах и прочем.
Это решаемо основами JS, и различия в поддержках DOM Events тут мало на что влиять будут.
Согласен, что управление каскадированием можно решить чисто средствами JS, но использование DOM, DOM Events и CSS (display Property и visibility Property) резко сокращает объем кода.
Вместо div и span используются block и inline.
Что-то не понял. Первое - теги, второе - свойства. А к чему применять block и inline?
Текст то я поменяю, а вот яву не зашарю.
Вот это я тоже не понял.
:)
В решении этих вопросов надо исходить из позиции стандартов W3. XML Events показывает, что все реакции на события при их обработке должны проходить от корня дерева - документа к целевому узлу, для которого, собственно, и предназначен клик. Т.е. на один клик мыши откликнутся все узлы, которые "видны из под данного" в указанном порядке. Майкрософт пошел своим путем (по непроверенным данным в восьмой версии ИЕ будет поддерживаться стандартная модель). В IE событие просачивается от целевого узла (который лежит на поверхности) к корню документа. Когда отображается только один уровень объектов, реагирующих на клик - эта разница незаметна, однако при многослойных структурах - возникает проблема. Какие есть решения для многослойных структу
…aroma
Текст на ссылках также менять надо?
Представляется, что решением указанной проблемы является активное использование CSS. Именно в этом направлении развиваются все браузеры. Вместо div и span используются block и inline. А обработка кликов в этом случае сводится к модификации свойств видимости.
См. Bug 39598 - Implement show="embed" for simple XLink. Firefox не поддерживает корректно атрибут xLink:show со значением "embed".
Thank you, vary, vary!
Обнаружено, что FF неправильно реагирует на аттрибут xLink:show со значением "embed": вместо подстановки ресурса, определяемого ссылкой, заменяет весь документ на этот ресурс. Кто может сказать: это несоответствие стандарту W3 - случайность или преднамеренность??? Буду признателен за любую информацию по этому вопросу.
майкософт и файфох(опера) по разному обрабатывают клики. Возможны два подхода: в джаваскрипт анализировать, какой браузер открывает этот текст, либо использовать спец.ПО, которое автоматически подстраивается под браузер (ссылок не могу дать, не знаю)
Такое впечатление, что evjs.js не присоединяется???
piontr а вдруг процессу мешает AdCentriaIM засевшая в вашем браузере :)
действительно, такая проблема есть. Еще не справился с about:config. Но представляется , что проблема в другом. В Опере это тоже не работает
27-11-2008 17:09:57
evjs.js не присоединяется
Вот так:
Выделить кодКод:
<ev:aaa xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xhtml:script language="JavaScript" type="application/x-javascript" src="testev.js"/>присоединится.
Спасибо за совет. Но, видимо префикс ev: не следует ставить перед aaa , но все равно это не работает и в Опере и в ФФ
…Да, есть. Попробую удалить.
Уважаемые эксперты!
Плиз, помогите получить отклик на клик в ХМЛ для ФФ
Такое впечатление, что evjs.js не присоединяется???
<?xml version="1.0" encoding="UTF-8"?>
<!-- исходный XML-документ -->
<?xml-stylesheet type= "text/css" href="ev_css.css" ?>
<aaa xmlns:ev="http://www.w3.org/2001/xml-events">
<script language="JavaScript"
type="application/x-javascript" src="evjs.js"
/>
<bbb ev:event="click" ev:handler="x-javascript:test">
сделать клик на этом теге
и получить ответ на уровне alert -test
</bbb>
</aaa>
/*файл ev_css.css*/
aaa { display:block;
border:1pt solid silver;
padding:4pt 4pt 4pt 4pt;}
bbb { display:block;
border:1pt solid silver;
text-align:center;
height:30pt;}
Страницы: 1