我有一个使用prootype框架的网站,我希望使用jquery插件。一切都不适用于IE8。它工作在ie7令我惊讶。知道什么可能是错的吗?
IE8给我的对象不支持这个属性或方法,其中行jQuery.noConflict();是
<script src="/my/docs/jquery.js" type="text/javascript"></script>
<script src="/my/docs/jquery.simplyscroll.js" type="text/javascript"> </script>
<script type="text/javascript">
jQuery.noConflict();
function OpenUp(sURL){
window.open(sURL,null,'height=560,width=820,status=yes,toolbar=yes,menubar=yes,location=yes,resizable=yes,scrollbars=yes',false);
}
jQuery(document).ready(function($) {
$("head").append("<link>");
css = $("head").children(":last");
css.attr({
rel: "stylesheet",
type: "text/css",
href: "/my/docs/jquery.simplyscroll.css"
});
$("#scroller").simplyScroll({
autoMode: 'loop',
framerate: 1,
speed: 1
});
});
</script>
我也厌倦了以下事项:var $j = jQuery.noConflict(); var j = jQuery.noConflict();
everythig只能在IE8中使用。
答案 0 :(得分:6)
我也使用jQuery-1.4.4.js遇到了这个问题。除IE8外,一切正常。 IE8无法识别jQuery()。我能够通过加载jQuery并在加载Prototype之前运行$ .noconflict()来解决这个问题,并且它在我的所有测试浏览器(包括IE8)上运行良好。这个序列与jQuery文档相反,因此我很担心它。在jQuery网站上找不到任何关于它的内容。
t22harris
答案 1 :(得分:2)
我能够解决这个问题的唯一方法,IE8(这是唯一一个有问题)和其他浏览器的方法是将jQuery和noConflict()调用放在头部后立即初始化其他库。像这样:
<script type="text/javascript" src="/path/to/prototype.js"></script>
<script type="text/javascript" src="/path/to/jquery.js"></script>
<script type="text/javascript">var $j = jQuery.noConflict(); </script>
...其次是使用jQuery或Prototype的任何其他脚本。
答案 2 :(得分:2)
我遇到过类似的问题。我目前使用的解决方案是将$变量保存在临时变量中,加载jquery(我从js代码加载jquery),运行jquery依赖代码(使用jQuery.noConflict),将$ variable设置回来。
它很脏,但似乎已经为我做了伎俩。
我添加jquery(如果需要)的函数是:
function getJQueryAndGo(callback) {
var thisPageUsingOtherJSLibrary = false;
var tempDollar = $;
// Only do anything if jQuery isn't defined
if (typeof jQuery == 'undefined') {
if (typeof $ == 'function') {
thisPageUsingOtherJSLibrary = true;
}
loadToHead('script','http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js', function() {
if (typeof jQuery=='undefined') {
//alert('Super failsafe - still somehow failed...')
} else {
jQuery.noConflict();
(function($) {
callback($);
})(jQuery);
}
});
}
else
{ // jQuery was already loaded
jQuery.noConflict(); // This may not be necessary
(function($) {
callback($);
})(jQuery);
}
$ = tempDollar;
}
loadToHead只是将脚本加载到head标签中,并在加载脚本时运行回调函数。
我在网上发现了大部分代码,并对其进行了调整。不幸的是,我不记得现在在哪里给予信任。
答案 3 :(得分:1)
我过去遇到过类似的问题,并使用模拟ie7元标记
解决了这个问题<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
我不确定这是否是最好的工作。
答案 4 :(得分:1)
刚遇到同样的问题。 IE 8不喜欢:
var jQuery = jQuery.noConflict();
将其更改为:
var jq = jQuery.noConflict();
工作正常。
答案 5 :(得分:0)
过去,IE8在安装了多个IE版本的机器上遇到了奇怪的问题。在我的情况下,当我尝试通过javascript在新窗口中打开链接时出现错误。相同的代码在IE6和7上运行良好,只安装了 IE8的机器运行良好。
答案 6 :(得分:0)
这也是我发现的问题。我修复它的方法是将我的jQuery升级到1.4。版本1.3.2在IE8上使用较新的原型失败。对不起,这个答案很晚。
答案 7 :(得分:0)
我有1.4.4和1.4.3完全相同的错误在原型之后加载jquery并且仅在IE8中,甚至在Ie7或Ie6中 Jquery 1.4为我解决了这个问题。