Sam*_*ami 7 javascript jquery internet-explorer-8
到目前为止,我将总结我们发现的内容:
在事件处理程序内部,无法在IE8中读取属性src(FF工作正常),既不使用jQuery也不使用通常的javascript
获取数据的唯一方法是将其放在处理程序之外,将其写入数组并从处理程序内部读取
但是仍然没有可能写入src(jQuery和javascript都没有工作 - 仅适用于IE 8)
我已经通过将img elemts自己写入文档来实现它,但这个问题背后的原因并没有解决
我们的代码片段使用了两次.
旧代码
<script type="text/javascript">
jQuery(document).ready(function() {
//...
//view entry
jQuery('.blogentry').live('click',function(){
// Get contents
blogtext = jQuery(this).children('.blogtext').html();
blogauthor = jQuery(this).children('.onlyblogauthor').html();
blogtitle = jQuery(this).children('.blogtitle').html();
profileimage = jQuery(this).children('.profileimage').html();
imgleft = jQuery(this).children('.Image_left').attr('src');
imgcenter = jQuery(this).children('.Image_center').attr('src');
imgright = jQuery(this).children('.Image_right').attr('src');
// Write contents
jQuery('#bild_left').attr('src', imgleft);
jQuery('#bild_center').attr('src', imgcenter);
jQuery('#bild_right').attr('src', imgright);
jQuery('.person').attr('src', profileimage);
jQuery('#g_fb_name').html(blogauthor);
jQuery('#g_titel').html(blogtitle);
jQuery('#g_text').html(blogtext);
//...
});
//...
// Change entry
jQuery('.blogentry').each(function(){
entryindex = jQuery(this).attr('rel');
if (entry == entryindex)
{
// The following works fine (so 'children' works fine):
blogtext = jQuery(this).children('.blogtext').html();
blogauthor = jQuery(this).children('.onlyblogauthor').html();
blogtitle = jQuery(this).children('.blogtitle').html();
profileimage = jQuery(this).children('.profileimage').html();
// This does not work - only in IE 8, works in Firefox
imgleft = jQuery(this).children('.Image_left').attr('src');
imgcenter = jQuery(this).children('.Image_center').attr('src');
imgright = jQuery(this).children('.Image_right').attr('src');
//alert: 'undefined'
alert(jQuery(this).children('.Image_center').attr('src'));
//...
}
}
//...
});
</script>
Run Code Online (Sandbox Code Playgroud)
新代码
请查看我自己发布的新代码答案.
更新:
这并没有如叫click事件的内部工作!
jQuery('.Image_left').each(function(){
alert(jQuery(this).attr('src'));
});
Run Code Online (Sandbox Code Playgroud)
获取图像数据的解决方案:
relcounter = 1;
imgleft_array = new Array();
jQuery('.Image_left').each(function(){
imgleft_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgcenter_array = new Array();
jQuery('.Image_center').each(function(){
imgcenter_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgright_array = new Array();
jQuery('.Image_right').each(function(){
imgright_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
//... inside the eventhandler (entryindex = 'rel' of blogentry):
imgleft = imgleft_array[entryindex];
imgcenter = imgcenter_array[entryindex];
imgright = imgright_array[entryindex];
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它没有在事件处理程序中调用,并且事先保存了源
但!我仍然无法写入数据,这是我的目标:
jQuery('#bild_left').attr('src', imgleft);
jQuery('#bild_center').attr('src', imgcenter);
jQuery('#bild_right').attr('src', imgright);
Run Code Online (Sandbox Code Playgroud)
UPDATE!
这只是疯了,我试图通过通常的JavaScript编写数据.这也适用于FF,但在IE8中没有.这里有一个属性src的严重问题:
document.getElementById('bild_left').src = imgleft;
document.getElementById('bild_center').src = imgcenter;
document.getElementById('bild_right').src = imgright;
alert(document.getElementById('bild_left').src);
Run Code Online (Sandbox Code Playgroud)
这适用于FF,但不适用于IE8,写入后属性src仍未定义!这似乎根本不是一个jQuery问题!
到目前为止,我将总结我们发现的内容:
在事件处理程序内部,无论使用 jQuery 还是通常的 javascript,都无法在 IE8 中读取属性 src(FF 工作正常)
获取数据的唯一方法是将其获取到处理程序外部,将其写入数组,然后从处理程序内部读取它
但仍然无法写入 src (jQuery 和 javascript 都不起作用 - 仅适用于 IE 8)
我通过将 img 元素本身写入文档来使其工作,但是这个问题背后的原因尚未解决
新代码
relcounter = 1;
imgleft_array = new Array();
jQuery('.Image_left').each(function(){
imgleft_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgcenter_array = new Array();
jQuery('.Image_center').each(function(){
imgcenter_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgright_array = new Array();
jQuery('.Image_right').each(function(){
imgright_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
//view entry
jQuery('.blogentry').live('click',function(){
// Get contents
entryindex = jQuery(this).attr('rel');
blogtext = jQuery(this).children('.blogtext').html();
blogauthor = jQuery(this).children('.onlyblogauthor').html();
blogtitle = jQuery(this).children('.blogtitle').html();
profileimage = jQuery(this).children('.profileimage').html();
imgleft = imgleft_array[entryindex];
imgcenter = imgcenter_array[entryindex];
imgright = imgright_array[entryindex];
// Write contents
jQuery('#entryimages').html('');
jQuery('#entryimages').html('<img class="rotate" width="132" height="138" id="bild_left" src="'+imgleft+'" /><img class="rotateright" width="154" height="162" id="bild_center" src="'+imgcenter+'" /><img class="rotate" width="132" height="138" id="bild_right" src="'+imgright+'" />');
jQuery('.person').attr('src', profileimage);
jQuery('#g_fb_name').html(blogauthor);
jQuery('#g_titel').html(blogtitle);
jQuery('#g_text').html(blogtext);
});
Run Code Online (Sandbox Code Playgroud)
所以我只是不在事件处理程序中使用 .attr('src')......
| 归档时间: |
|
| 查看次数: |
8736 次 |
| 最近记录: |