【问题标题】:internal implementation of DataTransfer.effectAllowed in firefox and chrome browserFirefox 和 chrome 浏览器中 DataTransfer.effectAllowed 的内部实现
【发布时间】:2026-01-22 07:40:02
【问题描述】:

我目前正在 MDN 上研究 HTML5 拖放 API,我有兴趣进一步了解 DataTransfer.effectAllowed 如何在 firefox 和 chrome 浏览器中实现。

因为这两种浏览器的源代码都很大,对于不熟悉源代码的人来说要找到他们正在寻找的确切内容是一项艰巨的任务,所以我只是想知道是否有人可以分享他们在搜索中的经验/策略他们的源代码?

【问题讨论】:

    标签: javascript google-chrome firefox browser


    【解决方案1】:

    我不确定 Chrome,但我会尝试使用 Mozilla Firefox。尽管它很大,但 Firefox 代码库可以使用两种不同的引擎进行搜索:SearchfoxDXR。两者都很棒,并且各有优缺点。

    搜狐:

    • 很快;
    • 很容易通过查找符号/实现来跟踪代码,并从那里继续挖掘代码。

    DXR:

    • 更加灵活;
    • 不会自动呈现 RST 文件(这对我来说很专业:D)。

    现在,针对您的问题,让我们使用 searchfox 查找 DataTranfer.effectAllowed

    1. 在左侧的搜索框中,输入“effectAllowed”。
    2. 这提供了一堆东西,JS 和 C++。第二个结果来自dom/events/DataTransfer.h,这可能就是您要找的。​​li>
    3. 让我们通过在右上角的框中写入*.cpp 来限制搜索.cpp 文件。
    4. 第二个结果将来自dom/events/DataTransfer.cpp,这正是实现所在的位置。见here

    从那里,根据您要查找的内容,您可以继续调查。我希望这会有所帮助:)

    更新:搜索 Chromium 源的步骤

    原来 Chromium 有一个类似的 service 用于搜索代码库。步骤也很相似!

    1. 转到https://cs.chromium.org/
    2. 在页面中心的搜索框中输入EffectAllowed
    3. 您将看到一个包含一些结果的下拉菜单。选择setEffectAllowed (in blink::DataTransfer),即具有.cc 实现文件的那个。
    4. 浏览到here,玩得开心!

    【讨论】:

    • 感谢@Dexter,列出了您为找到所需内容而采取的步骤。当我遇到类似的问题时,学习它是如何完成的肯定会对我有很大帮助:) 再次感谢
    • 不客气!我刚刚用如何搜索 Chromium 的源代码更新了我的答案。
    最近更新 更多