| 

.NET C# Java Javascript Exception

1
Hallo, ich möchte einen html-link mit einer javascript function aufrufen.
Wie setzte ich den link mit fs um?
Hier der code:
<tr>
<td><a href="images/image-1.jpg" rel="lightbox[galerie]" title="Firma" onFocus="this.blur()"><img src="image1.jpg" width="786" height="430" border="0"></a></td>
</tr>

Wer kann mir da behilflich sein?
20.07.2012
codepitter 1 1
3 Antworten
0
Wenn du mit "aufrufen" meinst, das du einen Klick durch den Benutzter simulieren möchtest, dann geht das u.a. so:

<tr>
<td><a id="myLink" href="images/image-1.jpg" rel="lightbox[galerie]" title="Firma" onFocus="this.blur()"><img src="image1.jpg" width="786" height="430" border="0"></a></td>
</tr>
[...]
<script>
document.getElementById("myLink").click();
</script>


Nachtrag:

Bezugnehmend auf deine Anfrage warum das im Chrome / Safari nicht geht, hier ein Nachtrag. In der Webkit-Engine, welche Chrome und Safari zugrunde liegen funktioniert das Beispiel aus Gründen der Sicherheit nur unter bestimmten umständen. Es gibt aber Workarounds. Im Normalfall würde ich jQuery Empfehlen damit du dich nicht auf solche Spitzfindingkeiten einlassen musst, da jQuery diese bereits für dich berücksichtigt:

$('#myLink').click();


In Vanila-JavaScript (also purem JS) kann man soch so helfen:

function simulateClick(el) {
var evt;
if (document.createEvent) { // DOM Level 2 standard
evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);

el.dispatchEvent(evt);
} else if (el.fireEvent) { // IE
el.fireEvent('onclick');
}
}
// http://stackoverflow.com/questions/1727064/how-to-fire-event-handlers-on-the-link-using-javascript


Im IE sollte das Beispiel aber problemlos gehen.

Die jQuery-Libary geht einen noch etwas komplizierten Weg und geht über den weg den Handler direkt rauszuschen und mittels "apply" aufzurufen was durchaus auch ein Weg ist. Ein vereinfachtes Beispiel:

var obj = document.getElementById("myLink");
var handler = obj.onclick;
handler.apply(obj, null);


Als letzte Möglichkeit sehe ich, mit gewissen Einschränkungen noch EVAL.

<tr>
<td><a id="myLink" href="images/image-1.jpg" rel="lightbox[galerie]" title="Firma" onFocus="document.getElementById("myLink").blur()"><img src="image1.jpg" width="786" height="430" border="0"></a></td>
</tr>
[...]
<script>
var src = document.getElementById("myLink").onClick;
eval(src);
</script>



Wobei zu beachten ist, dass du dich in einem anderen Scope befindest und "this" nicht mehr deinen link repräsentiert.
Achja und: EVAL ist EVIL!!! ;)

Fazit: nimm jQuery wenn du kannst :D
20.07.2012
Floyd 14,6k 3 9
Floyd 14,6k 3 9
0
Hi floyd, danke für die richtige Antwort. Auf dem Mac: Firefox und Opera können das, aber Safari und Chrome reagieren nicht. Unter Windows mit IE habe ich erst garnicht probiert.
Ich habe Dein Script in folgende js function eingebunden.
<script language="JavaScript" type="text/JavaScript">
<!--
function myShow () {
document.getElementById("myLink").click();
}
//-->
</script>

Ich rufe die function in einer flash datei auf, so.
slimbox_MC.onRelease = function(){
getURL("javascript:myShow();");
}

Hast Du eine Idee?
20.07.2012
1
Hab meine Antwort ein wenig erweitert ;)
Floyd 20.07.2012
0
Also Floyd: habe deine Beispiele probiert, aber bei mir funktioniert da nichts. Ich mache da wohl einiges falsch, habe von js wenig Ahnung.
Hier mein Test in html, der mit Chrome und Safari nicht funktioniert:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript" src="../js/flashmovie.js"></script>
<script type="text/javascript" src="../js/mootools.js"></script>
<script type="text/javascript" src="../js/slimbox.js"></script>
<link rel="stylesheet" href="slimbox.css" type="text/css" media="screen" />
<link href="../stil/entwurf.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function myShow () {
document.getElementById("myLink").click();
}
//-->
</script>
</head>

<body>
<table width="850" height="530" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="430" valign="top"><a id="myLink" href="images/image-1.jpg" rel="lightbox[galerie]" title="Firma" onFocus="this.blur()"><img src="../bilder/image1.jpg" width="786" height="430" border="0"></a></td>
</tr>
<tr>
<td valign="top"><script language="" type="text/JavaScript" >
<!--
FlashMovie("box_flash.swf", "box_flash", 200, 100, 6, "high", false, "#000000", "blubb=bla");
-->
</script>
</td>
</tr>
</table>
<div id="Layer1" style="position:absolute; left:544px; top:-50; width:40px; height:44px; z-index:1"><a href="images/image-2.jpg" rel="lightbox[galerie]" title="Firma "><img src="../bilder/blind.gif" width="30" height="30" border="0"></a></div>
</body>
</html>

Wie gesagt die function myShow benötige ich für den Aufruf innerhalb einer Flashdatei:
slimbox_MC.onRelease = function(){
getURL("javascript:myShow();");
}

Vielleicht kannst Du das html mal anschauen damit ich meine Fehler erkenne.
21.07.2012

Stelle deine Javascript-Frage jetzt!