总的来说,我对 Javascript 还很陌生,我从这个网站上主要发现的东西中拼凑了一个小脚本,试图让一个小的 iframe 循环浏览一堆链接,它做得非常好。但是,我还希望它在用户单击 iframe 或其任何内容时停止循环。
这是我到目前为止的代码。HTML 页面上只有一个 iframe。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
var sites = [
"side/html5.html",
"side/silverlight.html",
"side/wordpress.html",
"side/mysql.html",
"side/php.html",
"side/css3.html"
];
var currentSite = sites.length;
var timerId;
var iframeDoc = $("iframe").contents().get(0);
$(document).ready(function ()
{
var $iframe = $("iframe").attr("src","side/html5.html");
timerId = setInterval(function()
{
(currentSite == 0) ? currentSite = sites.length - 1 : currentSite = currentSite -1;
$iframe.attr("src",sites[currentSite]);
}, 4000);
$(iframeDoc).bind('click', function()
{
clearInterval(timerId);
});
});
//-->
</script>
</head>
<body>
<sidebar>
<iframe name="sideframe" src="side/html5.html"></iframe>
</sidebar> ..etc..
请帮忙,我正在尝试尽可能快地学习 Javascript,但据我所知,它应该可以工作,但实际上并没有。
感谢您能给我的任何帮助,非常感谢。
编辑:
好的,我现在有了一个新脚本,主要基于 Elias 的工作,但它也不起作用。我已经将它固定在 Firebug 中,它说 timerCallback.currentSite 值正在正确更新,尽管我找不到 $iframe 的 src 值来明确检查它。据我所知,它正在正确更新变量,只是没有正确更新 iframe。我是否在此代码中正确调用/设置 iframe?另外,jquery 库中的链接是否足以满足我的目的?我有点迷失了所有这些要链接到的库...
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
var sites =
[
"side/html5.html",
"side/silverlight.html",
"side/wordpress.html",
"side/mysql.html",
"side/php.html",
"side/css3.html"
];
var $iframe = $("iframe").attr("src","side/html5.html");
function timerCallback()
{
timerCallback.currentSite = (timerCallback.currentSite ? timerCallback.currentSite : sites.length) -1;
$iframe.attr("src",sites[timerCallback.currentSite]);
$($('iframe').contents().get('body')).ready(function()
{
$(this).unbind('click').bind('click',function()
{
var theWindow = (window.location !== window.parent.location ? window.parent : window);
theWindow.clearInterval(theWindow.timerId);
});
});
}
var timerId = setInterval(timerCallback, 4000);
//-->
</script>