在接受的答案下查看我的意見。基本上,使用這種方法有一些性能問題,這使我尋找更好的方法。爲此,我調整了麻省理工學院許可和書面咖啡腳本的rails turbolinks項目中找到的方法。值得信賴的是他們解決一些瀏覽器兼容性問題。
https://github.com/rails/turbolinks
/*
* A function that takes a string of HTML and returns a document object.
*/
var parseDocument = (function() {
function createDocumentUsingParser(html) {
return (new DOMParser()).parseFromString(html, 'text/html');
}
function createDocumentUsingDOM(html) {
var doc = document.implementation.createHTMLDocument('');
doc.documentElement.innerHTML = html;
return doc;
}
function createDocumentUsingWrite(html) {
var doc = document.implementation.createHTMLDocument('');
doc.open('replace');
doc.write(html);
doc.close();
return doc;
}
/*
* Use createDocumentUsingParser if DOMParser is defined and natively
* supports 'text/html' parsing (Firefox 12+, IE 10)
*
* Use createDocumentUsingDOM if createDocumentUsingParser throws an exception
* due to unsupported type 'text/html' (Firefox < 12, Opera)
*
* Use createDocumentUsingWrite if:
* - DOMParser isn't defined
* - createDocumentUsingParser returns null due to unsupported type 'text/html' (Chrome, Safari)
* - createDocumentUsingDOM doesn't create a valid HTML document (safeguarding against potential edge cases)
*/
var parser;
if (window.DOMParser) {
try {
var testDoc = createDocumentUsingParser('<html><body><p>test');
if (testDoc && testDoc.body && testDoc.body.childNodes.length === 1) {
parser = createDocumentUsingParser;
}
} catch(ex) {
parser = createDocumentUsingDOM;
}
}
if (!parser) {
parser = createDocumentUsingWrite;
}
return parser;
})();
那麼想必例如,你可以這樣做:
var doc = parseDocument(wadOfHtml);
var title = doc.title;
var $content = $(doc).find('#content');
被警告,我沒有驗證爲自己的代碼是否正確,我要脫鐵軌項目的信譽。我還沒有驗證我的咖啡改編是否沒有引入語法或其他錯誤。我從字面上甚至還沒有運行它;我只是樂觀。
當您使用jQuery將它解析爲html時,內容中省略了諸如'
',''和''等標記。我建議改爲定位特定標籤,或者先將其解析爲字符串,以便僅獲取'' – 2013-03-12 14:53:09之間的內容代碼,代碼,爲什麼代碼? – 2013-03-12 14:53:09
你需要從'