109 votes

Changer iframe src avec Javascript

Je suis en train de changer un iframe src lorsque quelqu'un clique sur un bouton radio. Pour une raison quelconque, mon code ne fonctionne pas correctement et j'ai de la difficulté à comprendre pourquoi. Voici ce que j'ai:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>

<SCRIPT LANGUAGE="JavaScript">
function go(loc){
    document.getElementById('calendar').src = loc;
}
</script>
</head>

<body>
<iframe id="calendar" src="about:blank" width="1000" height="450" frameborder="0" scrolling="no"></iframe>

<form method="post">
    <input name="calendarSelection" type="radio" onselect = "go('http://calendar.zoho.com/embed/9a6054c98fd2ad4047021cff76fee38773c34a35234fa42d426b9510864356a68cabcad57cbbb1a0?title=Kevin_Calendar&type=1&l=en&tz=America/Los_Angeles&sh=[0,0]&v=1')"/>Day
    <input name="calendarSelection" type="radio" onselect = "go('http://calendar.zoho.com/embed/9a6054c98fd2ad4047021cff76fee38773c34a35234fa42d426b9510864356a68cabcad57cbbb1a0?title=Kevin_Calendar&type=1&l=en&tz=America/Los_Angeles&sh=[0,0]&v=1')" />Week
    <input name="calendarSelection" type="radio" onselect = "go('http://calendar.zoho.com/embed/9a6054c98fd2ad4047021cff76fee38773c34a35234fa42d426b9510864356a68cabcad57cbbb1a0?title=Kevin_Calendar&type=1&l=en&tz=America/Los_Angeles&sh=[0,0]&v=1')"/>Month
    </form>

</body>

</html>

140voto

Pekka 웃 Points 249607

Dans ce cas, c'est probablement parce que vous utilisez le mauvais crochets ici:

document.getElementById['calendar'].src = loc;

devrait être

document.getElementById('calendar').src = loc;

70voto

inemanja Points 164

Peut-être que cela peut être utile... C'est la plaine de html pas de javascript:

<p>Click on link bellow to change iframe content:</p>
<a href="http://www.bing.com" target="search_iframe">Bing</a> -
<a href="http://en.wikipedia.net" target="search_iframe">Wikipedia</a> -
<a href="http://google.com" target="search_iframe">Google</a> (not allowed in inframe)

<iframe src="http://en.wikipedia.net" width="100%" height="100%" name="search_iframe"></iframe>

Par la façon dont certains sites ne vous permettent pas de les ouvrir dans un iframe (des raisons de sécurité - le détournement de clics)

18voto

Jim Clouse Points 1688

Voici le jQuery façon de le faire:

$('#calendar').attr('src', loc);

9voto

Aaron D Points 2585

L' onselect doitonclick. Cela fonctionne pour les utilisateurs du clavier.

Je voudrais également recommander l'ajout d' <label> des balises dans le texte de "Jour", "Mois" et "Année" pour les rendre plus faciles à cliquer sur. Exemple de code:

<input id="day" name="calendarSelection" type="radio" onclick="go('http://calendar.zoho.com/embed/9a6054c98fd2ad4047021cff76fee38773c34a35234fa42d426b9510864356a68cabcad57cbbb1a0?title=Kevin_Calendar&type=1&l=en&tz=America/Los_Angeles&sh=[0,0]&v=1')"/><label for="day">Day</label>

Je voudrais également vous recommandons d'enlever les espaces entre l'attribut onclick et la valeur, même si cela peut être interprété par les navigateurs:

<input name="calendarSelection" type="radio" onclick = "go('http://calendar.zoho.com/embed/9a6054c98fd2ad4047021cff76fee38773c34a35234fa42d426b9510864356a68cabcad57cbbb1a0?title=Kevin_Calendar&type=1&l=en&tz=America/Los_Angeles&sh=[0,0]&v=1')"/>Day

Devrait être:

<input name="calendarSelection" type="radio" onclick="go('http://calendar.zoho.com/embed/9a6054c98fd2ad4047021cff76fee38773c34a35234fa42d426b9510864356a68cabcad57cbbb1a0?title=Kevin_Calendar&type=1&l=en&tz=America/Los_Angeles&sh=[0,0]&v=1')"/>Day

7voto

Aram Paronikyan Points 81

Cela devrait aussi fonctionner, même si le " src " restera intacte:

document.getElementById("myIFrame").contentWindow.document.location.href="http://myLink.com"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X