我正在尝试捕获html
<title></title>
和Metadata
来自form1
,但不确定如何做到这一点......
我的意思是这样做:document.write(document.form1.title);
或document.write.texteara.(document.form1.title);
但这对我不起作用......
<textarea name="textarea" id="textarea" cols="45" rows="5"><title>This is the title tag extracted</title><meta name="keywords" content="test 1, test 2, test3" /></textarea>
</label>
</form>
<script type="text/javascript" src="<%= g_page_site_actual %>/js/jquery-1.4.2.min.js"></script>
<script language="JavaScript"><!--
if (document.getElementsByName) {
var metaArray = document.getElementsByName('Author');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
var metaArray = document.getElementsByName('Description');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
var metaArray = document.getElementsByName('Keywords');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
}
document.write(document.form1.title);
//--></script>
我是如何从textarea中捕获元数据的?
答案 0 :(得分:1)
textarea包含一个简单的文本字符串。没有元素或元数据。
<textarea name="textarea" id="textarea" cols="45" rows="5"><title>This is the title tag extracted</title><meta name="keywords" content="test 1, test 2, test3" /></textarea>
这是无效的,虽然浏览器通常会为您修复(无论如何,直到序列</textarea
)。您必须在<
的内容中对&
和<textarea>
进行HTML编码,就像所有文字内容和属性值一样:
<textarea name="textarea" id="textarea" cols="45" rows="5"><title>This is the title tag extracted</title><meta name="keywords" content="test 1, test 2, test3" /></textarea>
然后,您可以使用input.value
和任何其他字段一起阅读textarea的内容。
如果要将该字符串值解析为HTML文档并提取其中的一部分,则需要使用element.innerHTML= value
将其写入元素,然后使用DOM方法从元素中提取数据: / p>
var el= document.createElement('head');
el.innerHTML= document.getElementById('textarea').value;
alert(el.getElementsByTagName('title')[0].firstChild.value);
alert(el.getElementsByTagName('meta')[0].content);
不幸的是,IE无法执行此操作,因为它无法在innerHTML
或许多其他非正常块/内联元素的元素上设置<head>
。要让它在IE上运行,你必须使用一个完整的新文档来进行内容(真是太痛苦了):
<iframe id="iframe"></iframe>
<script type="text/javascript">
var iframe= document.getElementById('iframe');
var idoc= 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
idoc.write(document.getElementById('textarea').value);
idoc.close();
alert(idoc.title);
alert(idoc.getElementsByTagName('meta')[0].content);
</script>
在我看来,这不是一个好主意。难道你不能让服务器端生成一个页面来传递JavaScript需要以更方便的方式使用的信息吗?例如。吐出JSON编码的查找,如:
<script type="text/javascript">
var info= {
"title": "This is the title tag extracted",
"keywords": ["test 1", "test 2", "test3"]
};
</script>