Jürgen Schomann: Attribute setzen

Beitrag lesen

Hi,

noch einmal zum Attribute setzen. Ich versuche folgendes in JavaScript

var SELECT_LIST = "select";
 var SELECT_LIST_OPTION = "option";
 var ID_SELECT_LIST = "_str_select_list";
 var MESS = "Test";
 var _html_obj, _err_mess;

_err_mess = MESS;
 _html_obj = document.createElement(SELECT_LIST);
 _html_obj.setAttribute("id", ID_SELECT_LIST);
 _html_obj.setAttribute("onClick", "catchClick(_err_mess);");
 document.body.appendChild(_html_obj);
 _html_obj = document.createElement(SELECT_LIST_OPTION);
 document.getElementById(ID_SELECT_LIST).options[0] = _html_obj;
 _html_obj.selected = true;
 _html_obj.text = "aaa";
 _html_obj = document.createElement(SELECT_LIST_OPTION);
 document.getElementById(ID_SELECT_LIST).options[1] = _html_obj;
 _html_obj.text = "bbb";

aber im IE 6 erfolgt keine Reaktion beim anklicken der Liste. In Netscape 7 klappt es.
Wenn ich die Liste zusammenstelle und mit innerHTML zuweise geht es bei beiden Browsern.
Auch die Schreibweise 'onClick' bzw. 'onclick' bringt keinen Erfolg. Außerdem ist die Möglichkeit über die Anweisung _html_obj.onclick = catchClick keine Lösung, da ich auch Argumente übergeben möchte, was ggf. nur umständlich über globale Variable möglich wäre. Da ich aber allgemeine Funktionen erstellen möchte, möchte ich möglichst wenige globale Variablen definieren, um Konflikte mit ggf. gleichnamigen Variablen des Endanwenders zu vermeiden.
Ich möchte aber gerne die o. g. Version, da innerHTML zwar von den Browsern für IE und Netscape unterstützt wird aber eben nicht W3-konform ist. Im Hinblick auf einen universellen Einsatz bzw. zukünftige W3-konforme Standardisierungsbestrebungen möchte ich mich gern an den W3-Standard halten. Ich habe bisher versucht andere Funktionen auch nur nach diesem Standard auszurichten, wenn auch insbesondere beim Event-Handling doch noch die Browsertypen berücksichtigt werden müssen.
Kann mir jemand dazu etwas sagen?

Hier noch gleich ein anderes Problem.
Ich benutze Netscape 7.0 unter Windows XP Home Edition Version 2002. Nun versuche ich in JavaScript die openDialog-Methode für das window-Objekt anzuwenden, um ein modales Fenster zu öffnen. Im IE gibt es dazu die äquivalente Methode showModalDialog, die gut funktioniert. Außerdem kann man in Netscape auch über die open-funktion für das window-Objekt mit den besonderen Eigenschaften 'modal=yes,alwaysRaised=yes,dependent=yes' ein modales Fenster öffnen aber leider keine Argumente wie bei der showModaldialog-Methode im IE mit übergeben. Man muß die Argumente umständlich in internen Tags zwischenspeichern und dann über die opener-Eigenschaft abholen. Deshalb suche ich nähere Hinweise bzw. die Ursache für den unten aufgeführten Fehler bei Anwendung der openDialog-Methode in Netscape, bei der man auch Argumente übergeben können soll. Hier die zugehörige HTML-Datei:

<html>
<head>
<script language="JavaScript">
function openModal(_win_url)
{
 var WINDOW_NAME = "mod_win";
 var _win_feat, _win_arg;
 _win_arg = "Test";
 netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
 netscape.security.PrivilegeManager.enablePrivilege("UniversalDialogModality");
 _win_feat = "outerHeight=150,outerWidth=400";
 window.openDialog(_win_url, WINDOW_NAME, _win_feat, _win_arg);
 alert("Ende");
}
</script>
</head>
<body>
<form>
<b>Test Netscape openDialog</b>
<br>
<input type=button value="test modal window" onClick="openModal('modalWin.html');">
</form>
</body>
</html>

Außerdem habe ich in der Datei prefs.js folgende Zeile ergänzt:

user_pref("signed.applets.codebase_principal_support", true);

Doch beim Aufruf erhalte ich immer folgende Fehlermeldung:

error: uncaught exception: [Exception... "Security error"  code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"  location: "file:///C:/usr/html/test_modal.html Line: 16"]

Kann mir jemand dazu auch noch etwas sagen?
Vielen Dank im voraus.
Jürgen