Hallo,

Mijn klant heeft een iframe waarin 2 textareas staan, 1 textarea in javascript staat, en de ander gewoon in HTML die hij vervolgens vernieuwd via javascript. Het is namelijk een HTML editor.

Het probleem is dat hij de gegevens die in textarea 1 wil kunnen opslaan. Mijn probleem is hoe kom ik nou bij de content van textarea 1 om vervolgens die op te slaan.

Edit: Het gaat hier om regel 32, in dat bestand staan de textareas.
Hoe kan ik dit het beste oplossen?
<?php include '../html/includes/data_compleet.php'; ?>

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Editor - HTML verwerker</title> 

<link href="http://www.google.nl/intl/nl/services/css/default.css" rel="stylesheet"> <!-- Blauwe button -->
<link href="style.css" rel="stylesheet"> <!-- Medals en gewone CSS -->


<script>
<!--
if (window!= top)
top.location.href=location.href
// -->
</script> <!-- Anti-iframe script -->

</head> 
<body onload="begin('tec/begin.html'); return false;" class="icoMr">

<div style="position:absolute; margin:.8em; bottom:0em; right:0em; font-family:verdana;font-size:13px;">
<a style="margin-top:20px;" class="maia-button" data-g-action="Editor" data-g-event="Editor" data-g-label="Editor" href="#" onclick="forum('forum/index.php'); return false;">Forum</a>
<?php 
	if(isset($_SESSION['user_id']) === true) {
		echo '<a style="margin-top:20px; margin-right: 3px; " class="maia-button" data-g-action="Editor" data-g-event="Editor" data-g-label="Editor" href="#" onclick="account(\'ingelogt/welkomscreen.php\'); return false;">Account</a>';
		echo '<a href="ingelogt/logout.php" class="maia-button">Log uit</a>';
	} else {
		echo '<a style="margin-top:20px; margin-right: 3px; " class="maia-button" data-g-action="Editor" data-g-event="Editor" data-g-label="Editor" href="#" onclick="account(\'account/login.php\'); return false;">Login</a>';
	}
?>
</div>
	<iframe name="c" src="tec/converter.html" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="90%" scrolling="auto"></iframe>
	<script type="text/javascript" lang="javascript" src="http://deseloper.org/examples/modal-simple/jquery-1.2.3.js"></script>

	<script type="text/javascript" lang="javascript" src="http://deseloper.org/examples/modal-simple/modal-window.js"></script>



	<script type="text/javascript" lang="javascript">

	var begin = function(source)

	{

		modalWindow.windowId = "begin";

		modalWindow.width = 700;

		modalWindow.height = 400;

		modalWindow.content = "<iframe width='700' height='400' frameborder='0' scrolling='no' src='" + source + "'>&lt/iframe>";

		modalWindow.open();

	};

	var forum = function(source)

	{

		modalWindow.windowId = "forum";

		modalWindow.width = 900;

		modalWindow.height = 500;

		modalWindow.content = "<iframe width='900' height='600' frameborder='0' scrolling='no' src='" + source + "'>&lt/iframe>";

		modalWindow.open();

	};

	var account = function(source)

	{

		modalWindow.windowId = "account";

		modalWindow.width = 600;

		modalWindow.height = 400;

		modalWindow.content = "<iframe width='600' height='400' frameborder='0' scrolling='no' src='" + source + "'>&lt/iframe>";

		modalWindow.open();

	};	
	</script> 
</body> 
</html>


Eidt: Het gaat hier om regel
Hallo Tim,

Ik zal er eens naar kijken. Dit wordt dan wel helaas morgen.
voorlopig zie ik helemaal niets staan over een <textarea> in de broncode.

maar in het algemeen:
geef het element (in dit geval de textarea een uniek id: <textarea id="invoerveld">

en dan kun je zo het element benaderen en de content er uit vissen:

<html>
<head>
<script>
window.onload = function() {

	var textarea = document.getElementById('invoerveld');
	alert(textarea.innerHTML);

	var invoerveld = document.getElementById('textinput');
	alert(invoerveld.value);

}
</script>
</head>
<body>
<textarea id="invoerveld">bananen</textarea><br/>
<input type="text" id="textinput" value="appels" />
</body>
</html>
Hallo Frank,

Die code was ik inderdaad vergeten te posten. Hieronder staat hij dan:
<!DOCTYPE html>

<html>

<head>

<title>Editor</title>

<!-- COPYRIGHT © EDITOR 2013 - NIETS MAG GEKOPIËERD WORDEN ZONDER TOESTEMMING. -->

<script type="text/javascript">



var editboxHTML = 

'<html class="expand close">' +

'<head>' +

'<style type="text/css">' +

'.expand { width: 100%; height: 100%; }' +

'.close { border: none; margin: 0px; padding: 0px; }' +

'html,body { overflow: hidden; }' +

'</style>' +

'</head>' +

'<body class="expand close" onload="document.f.ta.focus(); document.f.ta.select();">' +

'<form class="expand close" name="f">' +

'<textarea class="expand close" style="background: #FFF;" name="ta" wrap="hard" spellcheck="false">' +

'</textarea>' +

'</form>' +

'</body>' +

'</html>';



var defaultStuff = 'Type hier uw HTML code of maak er een.';





var extraStuff = '';



var old = '';

         

function init()

{

  window.editbox.document.write(editboxHTML);

  window.editbox.document.close();

  window.editbox.document.f.ta.value = defaultStuff;

  update();

}



function update()

{

  var textarea = window.editbox.document.f.ta;

  var d = dynamicframe.document; 



  if (old != textarea.value) {

    old = textarea.value;

    d.open();

    d.write(old);

    if (old.replace(/[rn]/g,'') == defaultStuff.replace(/[rn]/g,''))

      d.write(extraStuff);

    d.close();

  }



  window.setTimeout(update, 150);

}



</script>

</head>

<frameset resizable="yes" rows="50%,*" onload="init();">

  <frame name="editbox" src="javascript:'';">

  <frame name="dynamicframe" src="javascript:'';">

</frameset>



</html>


Het probleem is dat de inhoud in de editboxHTML moet worden opgeslagen. Dit bestand wordt in een iframe gezet zoals bij regel 34 te zien is bij mij 1ste reactie.

Ik heb het geprobeert met jullie voorbeelden maar dit gaf niet het gewenste resultaat. De tekst die in de editboxHTML staat moet namelijk kunnen worden opgeslagen via PHP in het script van mij 1ste reactie. Daar zit het probleem.

Ik hoop dat dit voldoende informatie is.
Hallo Erwin,

Ik heb het toegepast in mij script en vervolgens in een alert gezet. Het probleem is dat ik geen alert krijg, kunt u vinden waardoor? Ik in de editboxHTML de textarea het id gegeven: 'textareainhoud'.

<?php include '../html/includes/data_compleet.php'; ?>

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Editor - HTML verwerker</title> 

<link href="http://www.google.nl/intl/nl/services/css/default.css" rel="stylesheet"> <!-- Blauwe button -->
<link href="style.css" rel="stylesheet"> <!-- Medals en gewone CSS -->


<script>
<!--
if (window!= top)
top.location.href=location.href
// -->
</script> <!-- Anti-iframe script -->

</head> 
<body onload="begin('tec/begin.html'); return false;" class="icoMr">

<div style="position:absolute; margin:.8em; bottom:0em; right:0em; font-family:verdana;font-size:13px;">
<a style="margin-top:20px;" class="maia-button" data-g-action="Editor" data-g-event="Editor" data-g-label="Editor" href="#" onclick="forum('forum/index.php'); return false;">Forum</a>
<?php 
	if(isset($_SESSION['user_id']) === true) {
		echo '<a style="margin-top:20px; margin-right: 3px; " class="maia-button" data-g-action="Editor" data-g-event="Editor" data-g-label="Editor" href="#" onclick="account(\'ingelogt/welkomscreen.php\'); return false;">Account</a>';
		echo '<a href="ingelogt/logout.php" class="maia-button">Log uit</a>';
	} else {
		echo '<a style="margin-top:20px; margin-right: 3px; " class="maia-button" data-g-action="Editor" data-g-event="Editor" data-g-label="Editor" href="#" onclick="account(\'account/login.php\'); return false;">Login</a>';
	}
?>
</div>
	<iframe name="c" src="tec/converter.html" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="90%" scrolling="auto" id="iframewindow"></iframe>
	<script type="text/javascript">
		var iframe = document.getElementById('iframewindow');
		var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
		var testge innerDoc.getElementById('textareainhoud').value;
		
		alert(testge);
	</script>

	<script type="text/javascript" lang="javascript" src="http://deseloper.org/examples/modal-simple/jquery-1.2.3.js"></script>

	<script type="text/javascript" lang="javascript" src="http://deseloper.org/examples/modal-simple/modal-window.js"></script>



	</body> 
</html>

var testge innerDoc.getElementById('textareainhoud').value;

Misschien nog even een = teken tussen?

var testge = innerDoc.getElementById('textareainhoud').value;
Hallo Erwin,

Nu krijg ik wel een alert alleen krijg ik null wat betekent dat het element leeg is. De javascript code is geworden:
<script type="text/javascript">
		var iframe = document.getElementById('iframewindow');
		var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
		var testge = innerDoc.getElementById('textareainhoud');
		
		alert(testge);
	</script>

Als ik achter de textareainhoud .value zet krijg ik namelijk geen alert meer..

Ik zou het op prijs stellen, als u mij wilt helpen ben namelijk niet goed in javascript maar meer in PHP.
Dat null komt omdat de functie 'getElementById' geen element met betreffende id kan vinden (en daardoor kan je dus ook niet het value ervan krijgen).
De reden dat er geen element gevonden kan worden is simpelweg omdat je helemaal geen id hebt gegeven aan je textarea (en dus zeker niet het id 'textareainhoud'). Dat zal je dus nog even moeten doen.
Hallo Erwin,

Dit heb ik degelijk gedaan. Hieronder nogmaals convert.html (een deel ervan)
<script type="text/javascript">



var editboxHTML = 

'<html class="expand close">' +

'<head>' +

'<style type="text/css">' +

'.expand { width: 100%; height: 100%; }' +

'.close { border: none; margin: 0px; padding: 0px; }' +

'html,body { overflow: hidden; }' +

'</style>' +

'</head>' +

'<body class="expand close" onload="document.f.ta.focus(); document.f.ta.select();" id="body">' +

'<form class="expand close" name="f">' +

'<textarea id="textareainhoud" style="background: #FFF; width: 100% height: 100%; border: none; margin 0px; padding: 0px;" name="ta" wrap="hard" spellcheck="false">' +

'</textarea>' +

'</form>' +

'</body>' +

'</html>';

var defaultStuff = 'Type hier uw HTML code of maak er een.';
var extraStuff = '';
var old = '';

function init() {
 window.editbox.document.write(editboxHTML);
 window.editbox.document.close();
 window.editbox.document.f.ta.value = defaultStuff;
 update();
}


Ik heb ook al gekeken of de id's kloppen met elkaar. En dat klopt. Waardoor komt het dat er null uitkomt?

Edit: Als ik er editboxHTML bij zet komt er ook geen alert.

Reageren