window.location.href的domready事件有哪些替代方案?

4
我们正在使用Joomla通过“refer” ID将URL页面传递给我们的管理电子邮件,请参考以下IT技术相关内容。
window.addEvent('domready', function() 
{ 
  document.getElementById('refer').value=window.location.href; 
});

这段代码在某些网站上有效,但在其他网站上无效。我尝试使用 jQuery 版本,但运气不佳,虽然我愿意听取建议。一个无法通过电子邮件返回 URL 的网站是 http://www.freestylelitemeter.com,而一个正常工作的网站是 http://www.comparediabetictestingsupplies.com。我们使用“refer”作为隐藏字段,一切都匹配,所以我认为问题出在 window.addEvent('domready', function() 这里,除非有我不知道的冲突。另一个有趣的事情是,工作的域名有更多的脚本文件,在过去发现了脚本文件之间的冲突,而较小的网站则没有。

当它不工作时,会发生什么? - Diodeus - James MacFarlane
1个回答

7
http://www.freestylelitemeter.com/上,MooTools无法加载。您的JavaScript控制台会显示以下错误信息:

SCRIPT438:对象不支持属性或方法“getElement”
mootools.js, line 53 character 97

MooTools使用window扩展addEvent()。由于MooTools未加载,addEvent()将失败,因此您的代码不会被执行。
您可能正在使用有缺陷的MooTools版本,请更正它,问题就会得到解决。
但更好的选择是,您已经在使用jQuery。只需将您的代码更改为以下内容即可:
$(function ()
{
    $('#refer').val(location.href);
});

你是否经常使用MooTools?你可以完全切换到jQuery,并减少一个库的加载。


顺便说一下,我更新了最新版本的mootools,但没有运气。 - Shane
1
@Shane - 将你的脚本块移动到jQuery脚本块下面。目前,jQuery在你的脚本运行之后加载。通常情况下,将所有库脚本块放在HTML的最前面,确保依赖脚本出现在它们所依赖的脚本之后。 - gilly3
我已经使用你的jQuery代码并移动库,在http://www.lifescandiabeticsupplies.com上使其正常工作。由于我们的脚本与模块绑定而不是模板,因此添加起来有点棘手,当我们更新模板时需要考虑到这一点。现在我将把它添加到其他网站中,非常感谢你的帮助。 - Shane
1
@Shane - 还有一点需要注意。看起来你需要一个旧版本的MooTools。jceutilities.js试图调用$E(),但这个函数自1.2版本之前就不再是MooTools的一部分了。当你的domready处理程序调用jceutilities时,它会出错,因此其他domready处理程序都不会被调用。你可以检查是否有适用于你的MooTools版本的jceutilities版本。或者如果你不需要它,可以删除jceutilities代码。顺便说一下,你的CompareDiabeticTestingSupplies网站报告了相当多的JavaScript错误。你也应该调查一下这些错误。 - gilly3
1
@Shane - 你现在遇到的错误是由于jQuery和MooTools都试图使用$符号。你可以同时使用MooTools和jQuery,但需要一些思考和规划。使用那个古老版本的MooTools(约5年前)可能会在尝试同时使用MooTools和jQuery时给你带来麻烦。你将不得不使用jQuery.noConflict()并为你的jQuery调用使用不同的变量。 - gilly3
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接