Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改iframe src是否有效?_Javascript_Html_Css - Fatal编程技术网

Javascript 更改iframe src是否有效?

Javascript 更改iframe src是否有效?,javascript,html,css,Javascript,Html,Css,我正在制作一个简单的web应用程序,我希望有导航链接,而不是使用标记,更改iframe的SRC。发生这种情况时,有没有办法让旧页面“向上滑动”并快速脱离iframe,然后让新页面加载?如果可能的话,我只想使用HTML、Javascript和CSS。我想到了两个选项 如果您没有使用jQuery,我建议您研究一下 1) 使用面具。当用户单击链接时,遮罩将淡入页面内容(位置:绝对;顶部:0;左侧:0;宽度:100%;高度:$windowHeight;颜色:#{mask color})。淡入完成后,使用

我正在制作一个简单的web应用程序,我希望有导航链接,而不是使用
标记,更改iframe的SRC。发生这种情况时,有没有办法让旧页面“向上滑动”并快速脱离iframe,然后让新页面加载?如果可能的话,我只想使用HTML、Javascript和CSS。

我想到了两个选项

如果您没有使用jQuery,我建议您研究一下

1) 使用面具。当用户单击链接时,遮罩将淡入页面内容(位置:绝对;顶部:0;左侧:0;宽度:100%;高度:$windowHeight;颜色:#{mask color})。淡入完成后,使用新内容重新加载iframe。然后,淡出面具

注意:(将fadeIn/fadeOut替换为slideUp/slideDown以获得幻灯片效果,请参见jquery效果:)

淡出:

$('#elemendId').fadeOut();
法丹:

$('#elemendId').fadeOut();
我认为默认淡入淡出时间是500,因此您需要为加载页面的代码设置超时

setTimeout(function() { ... load new iframe ... }, 500)
2) 放弃iFrame并对内容执行AJAX请求。差不多

$.post('path/to/file.html', function(data) {
 $('#destination-div').html(data)
});
这样更容易,您可能不会遇到那么多问题


编辑:实际上我不确定方法1是否有效。。。我忘了如果你能在iframe上加一个面具,我会想到两个选择

如果您没有使用jQuery,我建议您研究一下

1) 使用面具。当用户单击链接时,遮罩将淡入页面内容(位置:绝对;顶部:0;左侧:0;宽度:100%;高度:$windowHeight;颜色:#{mask color})。淡入完成后,使用新内容重新加载iframe。然后,淡出面具

注意:(将fadeIn/fadeOut替换为slideUp/slideDown以获得幻灯片效果,请参见jquery效果:)

淡出:

$('#elemendId').fadeOut();
法丹:

$('#elemendId').fadeOut();
我认为默认淡入淡出时间是500,因此您需要为加载页面的代码设置超时

setTimeout(function() { ... load new iframe ... }, 500)
2) 放弃iFrame并对内容执行AJAX请求。差不多

$.post('path/to/file.html', function(data) {
 $('#destination-div').html(data)
});
这样更容易,您可能不会遇到那么多问题


编辑:实际上我不确定方法1是否有效。。。我忘了在你继续阅读之前,你是否可以在iframe上盖一个面具。让我问你:你真的需要iframe吗?在网站中加载一个网站是你应该避免的事情,除非真的没有其他选择。它的速度很慢,并且通常会在不同浏览器之间造成很多问题

如果您将其用于导航,那么是否可以改用AJAX来加载新内容?或者,您可以先加载所有可能的内容,然后隐藏其中的一个

顺便说一句,如果你还没有太多的经验(如果我有错误的印象,我道歉):不要害怕AJAX这个词。它只是一个Javascript函数,允许向服务器发送数据,然后在加载页面后处理返回的任何内容。它也称为XML HTTP请求

在任何情况下,都可以使用Javascript框架,例如jQuery(http://jquery.com)或原型(http://prototypejs.org/)这会让你的工作轻松很多

如果没有其他选择:

1) 执行JS的链接很简单:例如

2) 让您的函数使用新内容创建一个新的iframe(
var newframe=new htmliframelement()
然后设置src等),并将其插入到上一个iframe的下面。给它一个较低的z索引,将其隐藏在另一个索引之下

3) 滑出iframe:使用带有
位置:相对的容器div,在其中放置带有
位置:绝对的iframe。让
javascript\u function()
使用计时器将iframe的css属性
top
从0更改为-500(或iframe的任何高度)。使用jQuery实现这一点特别容易。完成后,删除旧的iframe并将新iframe的z索引设置为类似于1的值(以避免需要越来越低的z索引)


请记住,您可以使用
来执行完全相同的操作,而不是使用ajax加载新内容;只要您不是从外部域加载。

在继续阅读之前,让我问您:您真的需要iframe吗?在网站中加载一个网站是你应该避免的事情,除非真的没有其他选择。它的速度很慢,并且通常会在不同浏览器之间造成很多问题

如果您将其用于导航,那么是否可以改用AJAX来加载新内容?或者,您可以先加载所有可能的内容,然后隐藏其中的一个

顺便说一句,如果你还没有太多的经验(如果我有错误的印象,我道歉):不要害怕AJAX这个词。它只是一个Javascript函数,允许向服务器发送数据,然后在加载页面后处理返回的任何内容。它也称为XML HTTP请求

在任何情况下,都可以使用Javascript框架,例如jQuery(http://jquery.com)或原型(http://prototypejs.org/)这会让你的工作轻松很多

如果没有其他选择:

1) 执行JS的链接很简单:例如

2) 让您的函数使用新内容创建一个新的iframe(
var newframe=new htmliframelement()
然后设置src等),并将其插入到上一个iframe的下面。给它一个较低的z索引,将其隐藏在另一个索引之下

3) 滑出iframe:使用带有
位置:相对的容器div,在其中放置带有
位置:绝对的iframe。让
javascript\u function()
使用计时器将iframe的css属性
top
从0更改为-500(或iframe的任何高度)。使用jQuery实现这一点特别容易。完成后,删除旧的iframe并将新iframe的z索引设置为类似于1的值(以避免需要越来越低的z索引)

请记住,您可以使用
来执行完全相同的操作,而不是使用ajax加载新内容;只要你不吃饱