1

我刚开始一份新工作,我的第一个任务是清理网站的 Javascript 代码 - 问题是使用了两个 JS 库(jQuery 和 Prototype / Scriptaculous)。

我试图弄清楚在哪里使用了什么,但这非常困难,尤其是对代码不太熟悉。

有没有人有什么建议?如果可能的话,我可能更愿意放弃 Prototype / Scriptaculous。

4

5 回答 5

2

我不建议放弃 javascript 库,因为这将是一个横截面的变化。非常危险,现在和将来都会导致虚假错误。

于 2010-02-11T15:36:52.783 回答
1

很可能,Prototype 将使用该$变量,并且 jQuery 将在noConflict模式下运行,因此它将被jQuery变量引用。

它可能会变得很棘手,例如:

 // here $ = Prototype

 jQuery(function($){
     // here $ = jQuery

 });

 // here $ = Prototype

在单独的文件中:

// here $ = Prototype
(function($){
    // here $ = jQuery;
})(jQuery);
// here $ = Prototype

注意您的上下文以查看正在引用的库非常重要。此外,如果您对如何在 jQuery 中做一些在 Prototype 中完成的事情感到困惑,那么在这里提问是完全可以接受的。

于 2010-02-11T15:38:22.593 回答
0

我会从所有页面上的所有包含中删除原型,删除 jquery 中的 noconflict,然后让 firebug 准备好向我显示所有错误,并一一检查所有页面,用 jquery 等效项替换函数,直到一切正常。

..对接方法疼痛,但怀疑你会发现不那么痛苦。可能会有所帮助:http ://api.jquery.com/browser/

于 2010-02-13T00:49:01.873 回答
0

这是一项艰巨的任务。如果一切正常,建议同时使用这两个框架并让它们继续存在并不是一个坏的建议。noConflict如果它们真的驻留在同一页面上,那么jQuery 很可能处于模式。

一个非常有用的工具是使用 Firefox 的Web Developer Toolbar并导航到页面并执行以下操作:Information -> View JavaScript-- 这将为您提供所有加载了标签的 JavaScript 脚本的完整列表,<script>以及标签中的内联 JavaScript <script>,尽管我认为内联事件处理程序未在此处列出。

但是您可以做的一件事就是简单地解开 Prototype 或 JavaScript 的钩子,然后看看哪个最终会导致更少的错误。然后你就可以调试缺少的东西了。

在一个库上标准化容易,但也有理由说“如果它没有坏,就不要修复它”。

我花了一些时间来了解所有框架,在相同的 HTML 上执行相同的效果:ArtLung Rosetta :您可以通过比较thisthis快速深入了解 Prototype 和 jQuery 语法之间的差异。

祝你好运!

于 2010-02-12T21:36:17.407 回答
0

尤其是摆脱 Prototype 可能会非常困难,尤其是如果有人在代码库上工作并真正“获得”了 Prototype。我在这里说的是我自己,我曾在一个非常大的 Web 应用程序上工作过,实际上它完全符合您所描述的组合(尽管我认为当我离开 Scriptaculous 的时候,这些东西已经消失了)。

由于 Prototype 的工作方式,绝对无处不在。

于 2010-02-11T15:39:02.653 回答