2010-09-25 61 views
0

我試圖捕捉到HTML捕捉標題和元標記從一個textarea

<title></title>

Metadataform1但不完全知道如何做到這一點?

我的問題是這樣做的: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中捕獲元數據?

回答

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,反正)。你必須HTML編碼<&<textarea>的就像所有文本內容的內容和屬性值:

<textarea name="textarea" id="textarea" cols="45" rows="5">&lt;title>This is the title tag extracted&lt;/title>&lt;meta name="keywords" content="test 1, test 2, test3" /></textarea> 

你最好再閱讀input.value textarea的內容與任何其他領域。

如果你想該字符串值解析爲一個HTML文件,並提取其中的一部分,你需要使用element.innerHTML= value將它寫入一個元素,然後使用DOM方法從元素中提取數據:

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需要以更方便的方式使用JavaScript的信息嗎?例如。吐出JSON編碼的查找,如:

<script type="text/javascript"> 
    var info= { 
     "title": "This is the title tag extracted", 
     "keywords": ["test 1", "test 2", "test3"] 
    }; 
</script>