Hallo zusammen,
bin neu hier und unfähig einen Fehler zu finden, der JavaScript Ausführungen in Webkit Browsern (Safari/Chrome)verhindert, während Firefox, Opera und IE "normal" funktionieren.
Der folgende Code ermöglicht einfaches Speichern, Auslesen und Löschen von Cookies (auch in Safari und Chrome). Seit Einfügen des Codes zum Anzeigen der noch verfügbaren Zeichen funktioniert nur noch das Auslesen. Wie geschrieben - in nicht Webkit basierenden Browsern - funktioniert Speichern und Löschen weiterhin.
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title></title>
<script type="text/javascript">
function saveCookie (cTitle, cValue, cExpiration) {
var now = new Date();
var endTime = new Date(now.getTime() + cExpiration);
document.cookie = cTitle+"="+escape(cValue)+"; expires="+endTime.toGMTString()+";";
}
function readCookie (cTitle) {
var dcookie = document.cookie;
var cname = cTitle+"=";
var clen = dcookie.length;
var cbegin = 0;
while (cbegin < clen) {
var vbegin = cbegin + cname.length;
if (dcookie.substring(cbegin, vbegin) == cname) {
var vend = dcookie.indexOf(";", vbegin);
if (vend == -1) vend = clen;
return unescape(dcookie.substring(vbegin, vend));
}
cbegin = dcookie.indexOf(" ", cbegin) + 1;
if (cbegin == 0) break;
}
return null;
}
function killCookie (cTitle) {
document.cookie = cTitle+"="+"; expires=Thu, 01-Jan-70 00:00:01 GMT;";
}
function CheckLen(Target) {
StrLen = Target.value.length
if (StrLen == 1 && Target.value.substring(0,1) == " ") {
Target.value = ""; StrLen = 0;
}
if (StrLen > 4000 ) {
Target.value = Target.value.substring(0,4000);
CharsLeft = 0;
}
else {
CharsLeft = 4000 - StrLen;
}
document.memo.numb.value = CharsLeft;
}
</script>
</head>
<body>
<h2>Memo</h2>
<form name="memo">
<p><label for="cTitle">Title:</label><br />
<input type="text" id="cTitle" name="cTitle" size="37" value="Cookie01" /></p>
<p><label for="cValue">Content:</label><br />
<textarea id="cValue" name="cValue" cols="50" rows="10" onChange="CheckLen(this)" onFocus="CheckLen(this)" onKeyDown="CheckLen(this)" onKeyUp="CheckLen(this)">Memos will be saved in your browser as cookies - with a lifetime of 12 month!</textarea></p>
<p><input type="button" onClick="javascript:cValue.value=(readCookie(document.forms[0].elements[0].value))" value="read memo" />
<input type="button" onclick="javascript:saveCookie(document.forms[0].elements[0].value, document.forms[0].elements[1].value, 1000*60*60*24*365)" value="save memo" />
<input type="button" onClick="javascript:killCookie(document.forms[0].elements[0].value)" value="delete memo" /> Characters left: <input type="text" name="numb" size="4" maxlength="4" readonly /></p>
</form>
</body>
</html>
Nachdem ich definitiv kein JavaScript King bin, kann ich auch nicht abschätzen, ob das ein Webkit Bug ist. Was auch nicht wirklich wichtig ist, nur, was muss man ändern, um in jedem Browser eine einwandfreie Funktion zu bekommen?
Schon mal vielen Dank für Eure Hilfe!
Sigi