我看到了这个,觉得它看起来很不错,所以我对它进行了一些测试。
这似乎是一种干净的方法,但就性能而言,与使用 jQuery 加载函数或使用 XMLHttpRequest 的 vanilla javascript 方法加载页面所花费的时间相比,它的性能落后了 50%,两者大致相似。
我想这是因为在后台它以完全相同的方式获取页面,但它还必须处理构建一个全新的 HTMLElement 对象。
总之,我建议使用 jQuery。该语法尽可能易于使用,并且它有一个结构良好的回调供您使用。它也相对较快。普通方法可能会快几毫秒,但语法令人困惑。我只会在无法访问 jQuery 的环境中使用它。
这是我用来测试的代码 - 它相当简陋,但多次尝试后的时间非常一致,所以我会说每种情况下精确到 +- 5ms 左右。测试是从我自己的家庭服务器在 Chrome 中运行的:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
</head>
<body>
<div id="content"></div>
<script>
/**
* Test harness to find out the best method for dynamically loading a
* html page into your app.
*/
var test_times = {};
var test_page = 'testpage.htm';
var content_div = document.getElementById('content');
// TEST 1 = use jQuery to load in testpage.htm and time it.
/*
function test_()
{
var start = new Date().getTime();
$(content_div).load(test_page, function() {
alert(new Date().getTime() - start);
});
}
// 1044
*/
// TEST 2 = use <object> to load in testpage.htm and time it.
/*
function test_()
{
start = new Date().getTime();
content_div.innerHTML = '<object type="text/html" data="' + test_page +
'" onload="alert(new Date().getTime() - start)"></object>'
}
//1579
*/
// TEST 3 = use httpObject to load in testpage.htm and time it.
function test_()
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
content_div.innerHTML = xmlHttp.responseText;
alert(new Date().getTime() - start);
}
};
start = new Date().getTime();
xmlHttp.open("GET", test_page, true); // true for asynchronous
xmlHttp.send(null);
// 1039
}
// Main - run tests
test_();
</script>
</body>
</html>