另一个 IE8 映像加载问题
Another IE8 image load issue
>我搜索了不同的网站,但无法弄清楚我哪里出错了。这适用于主要浏览器,但不适用于 IE7 或 IE8。我的问题是加载图像后事件的来源为空。你会看到它在页面上打印出来(我有一个div,我正在发送一些文本)。这是我的代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script type="text/javascript">
var panorama = new Object();
var mainContainer;
var panoHolder;
var panoCanvas;
//once document is loaded starts website
AttachEvent(window, 'load', eventWindowLoaded);
// logic to attach the event correctly in IE
function AttachEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
}else if (element.attachEvent) {
element.attachEvent('on' + type, handler)
} else {
element['on' + type] = handler;
}
}
function eventWindowLoaded() {
panorama.totalpanels = 6;
panorama.sourceLocation = "my_files/images/";
panorama.width = 3200;
panorama.height = 964;
panorama.thumbnails = new Object();
panorama.thumbnails.images = new Array(panorama.totalpanels);
panorama.thumbnails.imageWidths = new Array();
panorama.thumbnails.imageHeight = 0;
//sets attributes of container objects
mainContainer = document.createElement("div");
mainContainer.id = "container";
mainContainer.style.width = "1010px";
mainContainer.style.height = panorama.height + "px";
obj("mainelement").appendChild(mainContainer);
panoHolder = document.createElement("div");
panoHolder.id = "animationholder";
panoHolder.style.width = panorama.width + "px";
panoHolder.style.height = panorama.height + "px";
panoHolder.style.left = '0px';
panoHolder.style.top = "0px";
mainContainer.appendChild(panoHolder);
panoCanvas = document.createElement("div");
panoCanvas.id = "room";
panoCanvas.width = panorama.width;
panoCanvas.height = panorama.height;
panoHolder.appendChild(panoCanvas);
for(var i = 1; i <= panorama.totalpanels; i++) {
panorama.thumbnails.images[i - 1] = new Image();
AttachEvent(panorama.thumbnails.images[i - 1], 'load'preloadThumbnails);
panorama.thumbnails.images[i - 1].src = panorama.sourceLocation + "TC_tile_thumb" + i + ".jpg";
panorama.thumbnails.images[i - 1].id = i - 1;
}
}
function preloadThumbnails(e) {
panorama.thumbnails.loaded++;
//adds width and height attributes to panorama.thumbnails.imageWidths array
try {
panorama.thumbnails.imageWidths.push(e.currentTarget ? e.currentTarget.width : window.event.srcElement.width);
panorama.thumbnails.imageHeight = e.currentTarget.height;
panoCanvas.appendChild(e.currentTarget);
}
catch (ee) {
var targ;
if (!e) var e = window.event;
if (e.currentTarget) targ = e.currentTarget;
else if (e.srcElement) targ = e.srcElement;
t('<br /> error: ' + ee + '<br /> event: ' + e + '<br /> target: ' + targ + '<br />' + e[0], true);
}
if (panorama.thumbnails.loaded >= panorama.totalpanels) {
e.currentTarget.removeEventListener('load', preloadThumbnails , false);
startFullRezPreload();
}
}
//returns an object reference
function obj(element) {
return document.getElementById(element);
}
function t(message, addTo) {
if (addTo) {
obj("test").innerHTML += message;
}
else {
obj("test").innerHTML = message;
}
}
</script>
</head>
<body id="mainelement">
<div id="test">Test</div>
</body>
</html>
Internet Explorer(旧版本)没有将事件对象作为参数传递。它存储在名为"event"的全局(窗口)属性中。
传统的方法是在事件处理程序的顶部执行以下操作:
function preloadThumbnails(e) {
e = e || window.event;
相关文章:
- 在IE中加载Firebug Lite时出现问题
- ng绑定和ng href问题.ng href未从控制器加载数据
- FancyTree JS+Backbone.JS-将数据加载到FancyTree时出现问题
- 在FF和IE中使用vimeo播放器的问题-加载flash播放器而不是使用HTML5播放器
- 将数据加载到使用JSON返回的表单字段时出现问题
- 加载泰坦尼克号可视化数据时出现问题
- 动态加载的自定义javascript/jQuery/HTML5音频播放器的问题
- 使用ajax在html中加载html文件时出现的问题
- 在服务器上通过jQueryAjax上传加载的图像时出现问题
- jQuery全局加载页面问题
- XML 问题 - 加载空白页
- Chrome 应用/扩展程序 - 后台请求错误,或允许应用问题加载 Google 文档 API
- Angularjs $http IE9 中的本地磁盘问题加载数据
- Firefox中的大小调整问题-加载时
- 通过控制器问题加载图像
- AJAX问题"加载更多"按钮:点击后消失
- Chrome浏览器问题:“加载资源:net::ERR_CONNECTION_TIMED_OUT”失败
- 有问题加载所有JSON数据到标记层与在For循环
- XMLHttpRequest -事件的一个问题.加载和事件.总值
- Ember JSON加载问题-加载路由时出错:未定义