$find不在firefox中工作.ASP.NET幻灯片放映扩展器
本文关键字:幻灯片 NET 扩展器 ASP 工作 find 不在 firefox | 更新日期: 2023-09-27 18:01:08
我有一个asp.net ajax幻灯片扩展程序,我劫持了它,并将其变成了一个类似jquery的幻灯片控件。它在除firefox之外的所有浏览器中都能出色地工作。我已经将问题归结为$find调用不起作用。此外,我还必须在页面中放入一个setTimeout,以便在firefox中调用pageLoad。这在chrome或IE中也是不必要的。
这是代码。
setTimeout ( pageLoad(), 250 );
function pageLoad(){
var slider1;
slider1 = $find('<%= slExtender.BehaviorID %>');
slider1.add_slideChanging(onSlideChanging);
}
function onSlideChanging(sender, args)
{
currentSlideIndex = args.get_slideIndex();
//Do what you want using this index
var arr = <%= serializer.Serialize(linkArray) %>;
for(var i = 0; i < arr.length; i++)
{
if(i == currentSlideIndex)
{
var link = document.getElementById(arr[i]);
link.className += "hovered";
}
else
{
var link = document.getElementById(arr[i]);
link.className = "";
}
}
}
function SlideClicked(slID) {
var ss = $find(slID);
var arr = <%= serializer.Serialize(urlArray) %>;
window.location = arr[ss._currentIndex];
}
看起来$find在firefox中返回了null。另外,你知道为什么我必须在页面上设置一个超时来调用页面加载吗?。
此外,SlideClicked中的$find也起作用。slID是slExtender.BehaviorID
更新
如果我添加
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
使用以下javascript:
$(document).ready(function () {
pageLoad();
});
function pageLoad(){
var slider1;
slider1 = $find('<%= slExtender.BehaviorID %>');
slider1.add_slideChanging(onSlideChanging);
}
function onSlideChanging(sender, args)
{
currentSlideIndex = args.get_slideIndex();
//Do what you want using this index
var arr = <%= serializer.Serialize(linkArray) %>;
for(var i = 0; i < arr.length; i++)
{
if(i == currentSlideIndex)
{
var link = document.getElementById(arr[i]);
link.className += "hovered";
}
else
{
var link = document.getElementById(arr[i]);
link.className = "";
}
}
}
function SlideClicked(slID) {
var ss = $find(slID);
var arr = <%= serializer.Serialize(urlArray) %>;
window.location = arr[ss._currentIndex];
}
对页面来说,firefox中的一切都很好,不再适用于chrome或IE。我已经在主页上包含了1.4.1。
窗口对象有一个事件"onload",但这只能在某些浏览器中正常工作。有了这个,您将向它附加一个回调,然后执行所有依赖DOM的代码。这在不同的浏览器中是不一样的(有时在DOM准备好遍历之前就启动了onload,这会导致问题(,所以你必须聪明一点。
幸运的是,您使用的是一个支持它的框架。jQuery有一个方便的函数ready()
。以下是如何使用它的一个基本示例(由于大多数脚本都需要DOM,所以在任何地方都使用相同的形式(:
$(document).ready(function () {
// execute your code here, like adding event listeners, doing find, etc
});
因此,使用您的特定代码,执行以下操作:
$(document).ready(function () {
pageLoad();
});
我建议永远使用这种型号。永远不要在全局范围内调用代码,而是在DOM就绪时执行它。即使您不使用DOM,也可能最终会使用,所以这是有意义的。
$find('<%=slExtender.BehaviorID%>'(;
在上面的行中,如果"slExtender"是一个控件,则需要添加#。
将其设置为:$find('#<%=slExtender.BehaviorID%>'(;
试试这个。
对于页面加载问题,请尝试
$(函数(({var滑块1;
slider1 = $find('#<%= slExtender.BehaviorID %>');
slider1.add_slideChanging(onSlideChanging);
});