我有一个经典的ASP页面,它通过ASP页面内的iframe加载ASP.net页面。这很有效,除了加载ASP.net页面需要一段时间。用户留在这里有不愉快的经验,因为他们所说的只是一个空的空白页,直到页面完成加载。
我想要做的是加载一个初始的“加载”ASP.net页面,以便至少向用户显示一些东西,然后当ASP.net页面准备就绪时,将正确的ASP.net页面加载到iframe中。
这可能吗?我想也许有点javascript但不是100%肯定。
答案 0 :(得分:2)
您可以在加载页面后使用JQuery修改iframe。
stackoverflow上的Another question已经包含了一个很好的例子:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
$(document).ready(function(){
var locations = ["http://webPage1.com", "http://webPage2.com"];
var len = array.length;
var iframe = $('#frame');
var i = 0;
setInterval(function () {
$iframe.attr('src', locations[++i % len]);
}, 30000);
});
</script>
答案 1 :(得分:2)
一旦点击浏览器就没有“ASP页面”,只有生成的HTML。
这里有一些问题:
1)如果您在Iframe中添加了某些内容,则只要新页面加载,它就会被覆盖。因此,您无法使用iframe中的内容来显示您的消息。
2)如何判断Iframe何时加载
您需要确定页面上Iframe的位置和大小。您需要使用您的消息在其上放置一个元素。修改绝对定位元素的样式以使用JavaScript覆盖Iframe。大多数人会使用一个框架,比如jQuery,使其变得更容易。
然后,您需要检测Iframe何时加载并隐藏此元素。
您可以使用this code确定已加载Iframe:
function checkIframeLoading() {
// Get a handle to the iframe element
var iframe = document.getElementById('testIframe');
// Check if loading is complete
if ( iframe.document.readyState == 'complete' ) {
// The loading is complete, call the function we want executed once the iframe is loaded
functionToCallAfterLoading();
return;
}
// If we are here, it is not loaded. Set things up so we check the status again in 100 milliseconds
window.setTimeout('checkIframeLoading();', 100);
}