tobmes
Goto Top

RadioButton auf anderer Seite auslösen

Hi JavaScript Experten,

ich befasse mich gerade ein wenig mit dem Thema JavaScript. Ich habe mir jetzt mit HTML und CSS eine kleine Seite gebastelt. Jetzt würde mich mal interessieren, wie ich mit JavaScript einen RadioButton auf einer anderen Seite ansprechen kann.

Auf Seite 1 habe ich z.b. einen RadioButton, wenn ich diesen Button anklicke dann soll auf Seite 2 der Radiobutton per Script gechecked werden.

Also
Auf einer einzigen Seite würde ich das so machen:
<input type="radio" name="radioButton1" id="test">  
<button type="button" name="button" onclick="checkradio()">TEST</button>  
<script type="text/javascript">  
  function checkradio() {
    rbtn = document.getElementById("test");  
    rbtn.checked = true;
  }
</script>

Ich danke euch schon mal für die Hilfe.

Content-ID: 304105

Url: https://administrator.de/contentid/304105

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

129148
129148 10.05.2016 aktualisiert um 21:29:13 Uhr
Goto Top
Wenn die andere Seite nicht in deinem Webspace liegt, gar nicht, denn dann greift der Sicherheitsmechanissmuss CORS der XSS (Crossite Scripting) aus Sicheheitsgründen verhindert. Nur wenn eine Seite explizit über den Response-Header den JavaScript-Zugriff von anderen Domains aus erlaubt wird das was mit DOM-Manipulation per javaScript, und das tun 99,9% der Seiten nicht, und das ist auch gut so.

Wenn die Seite die du on the fly manipulieren willst auf deinem Webserver liegt ist das kein Problem, dann müsstest du die Seite aber in einen IFrame oder ein anderes Fenster laden um darauf zuzugreifen und den Radiobutton zu setzen.

Du kannst natürlich, wenn es deine Seite ist die andere Seite so aufbauen das diese den Radiobutton anhand von GET-Parametern setzt und du dann einfach per URL-Aufruf und einem URL-Parameter diesen entsprechend setzen kannst.

Wenn du andere Seiten manipulieren willst bist du mit ClientSide-JavaScript-Browseraddons wie Greasemonkey besser bedient.

Oder du machst es über IE-Automation.
tobmes
tobmes 11.05.2016 um 12:40:42 Uhr
Goto Top
HI,

danke für deine Antwort. Ja die Seiten liegen natürlich alle auf meinem Server. Kannst du mir evtl. ein kleines Beispiel geben, wie das mit dem URL-Parameter ausshen soll.

Danke schon mal.
129148
Lösung 129148 11.05.2016 aktualisiert um 14:51:36 Uhr
Goto Top
Hier mal ein Beispiel wie man es direkt (ohne URL-Parameter) machen kann, es besteht aus zwei Seiten

Seite1.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Seite 1</title>
</head>
<script type="text/javascript">  
function setRadioInOtherPage(){
	var btnChange = document.getElementById("btnChange");  
	var otherWindow = window.open("seite2.html");  
	otherWindow.onload = function(){
		otherWindow.document.getElementById("radio2").checked = true;  
	};
}
</script>
<body>
<input type="button" name="btnCheck" id="btnChange" value="Ändere Radiobutton auf Seite 2" onClick="setRadioInOtherPage()" />  
</body>
</html>

Seite2.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Seite 2</title>
</head>
<body>
<input type="radio" name="radio2" id="radio2" />  
Ich werde automatisch geändert
</body>
</html>

Ein Beispiel mit URL-Parametern reiche ich noch nach.
129148
Lösung 129148 11.05.2016 aktualisiert um 19:01:31 Uhr
Goto Top
Und hier kommt noch das Beispiel mit URL-Parameter:

Die Seite sollte man dann so aufrufen:

http://deineseite.local/seitexyz.html?radio=checked
Wenn der Wert des Parameters "checked" ist wird der Radiobutton aktiviert ansonsten bleibt er so wie er war.

<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>URL-Parameter-Demo</title>
</head>
<script type="text/javascript">  
function init(){
	var radio1 = document.getElementById("radio1");  
	var url_parameter = getUrlVars();
	if (url_parameter['radio'] != null){  
		var checked = (url_parameter['radio'] == "checked") ? true : false;  
		radio1.checked = checked;
	}
}
function getUrlVars()
{
    var vars = , hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');  
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');  
        vars.push(hash);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
</script>
<body onLoad="init()">  
<input type="radio" name="radio2" id="radio1" />  
Ich werde automatisch geändert
</body>
</html>
tobmes
tobmes 13.05.2016 um 11:48:26 Uhr
Goto Top
Hi,

das ist ja doch etwas Aufwendiger, als ich mir das vorgestellt habe. Vielen Danke für eure Hilfe.
129148
129148 13.05.2016 aktualisiert um 11:51:48 Uhr
Goto Top
Zitat von @tobmes:
das ist ja doch etwas Aufwendiger, als ich mir das vorgestellt habe.
Was ist daran aufwändig face-big-smile ? Normalerweise macht man das Auswerten der URL-Parameter auf der Zielseite ja eher mit einer serverseitigen Programmiersprache wie PHP und nicht mit JavaScript.
Vielen Danke für eure Hilfe.
Keine Ursache.