Javascript drupal_add_js()在module_init()中-js库是否会跨所有模块加载?

Javascript drupal_add_js()在module_init()中-js库是否会跨所有模块加载?,javascript,drupal-6,Javascript,Drupal 6,当在module_init()函数中调用drupal_add_js()时,加载的js库是否会在其他模块访问库时具有全局存在性 例如: 假设有两个模块-每个模块都需要一个JS库,并且两个JS库的名称相同。JS库存在于各自的模块目录中。虽然两个JS库的名称相同,但它们的内容不同,因此每个模块都不能使用另一个模块的JS库-这样做会导致模块失败 因此,如果实际上JS库是按照上述方法加载全局存在的,那么就会出现问题。加载第一个模块时,其JS库将在所有模块中全局应用。接下来,加载第二个模块,其JS库将在所有

当在module_init()函数中调用drupal_add_js()时,加载的js库是否会在其他模块访问库时具有全局存在性

例如:

假设有两个模块-每个模块都需要一个JS库,并且两个JS库的名称相同。JS库存在于各自的模块目录中。虽然两个JS库的名称相同,但它们的内容不同,因此每个模块都不能使用另一个模块的JS库-这样做会导致模块失败

因此,如果实际上JS库是按照上述方法加载全局存在的,那么就会出现问题。加载第一个模块时,其JS库将在所有模块中全局应用。接下来,加载第二个模块,其JS库将在所有模块中全局应用。在此阶段,两个模块都处于活动状态。由于JS库的名称相同,因此第二个模块的JS库将有效地替换第一个模块的JS库,从而导致第一个模块失败


谢谢

模块使用
drupal\u add\u js()
添加的JavaScript代码被添加到页面中,添加到页面的JavaScript代码列表是一个,每个模块都是全局的。这意味着从模块添加的JavaScript代码对每个模块都是可见的

事实上,该列表包含在drupal_add_js()使用的静态变量中,JavaScript代码使用以下代码添加到page.tpl.php文件中的页面:

  <?php print $styles; ?>
  <?php print $scripts; ?>
例如,如果两个模块使用
drupal\u add\u js(drupal\u get\u path('module','first\u module')./jquery\u plugin\u tree')
drupal\u add\u js(drupal\u get\u path('module','second\u module')./jquery\u plugin\u tree')调用函数,那么页面将包含两个指向两个文件的
标记,即使两种情况下文件的内容相同


如果两个模块对JavaScript文件使用相同的路径,那么只会添加一个
标记。

模块使用
drupal\u add\u js()
添加到页面的JavaScript代码被添加到页面,添加到页面的JavaScript代码列表是一个,每个模块都是全局的。这意味着从模块添加的JavaScript代码对每个模块都是可见的

事实上,该列表包含在drupal_add_js()
使用的静态变量中,JavaScript代码使用以下代码添加到page.tpl.php文件中的页面:

  <?php print $styles; ?>
  <?php print $scripts; ?>
例如,如果两个模块使用
drupal\u add\u js(drupal\u get\u path('module','first\u module')./jquery\u plugin\u tree')
drupal\u add\u js(drupal\u get\u path('module','second\u module')./jquery\u plugin\u tree')调用函数,那么页面将包含两个指向两个文件的
标记,即使两种情况下文件的内容相同


如果两个模块对JavaScript文件使用相同的路径,那么只会添加一个
标记。

据我所知,两个JS脚本文件都是全局可访问的。然后,如果两个JS脚本文件都有同名但行为不同的函数,会发生什么情况?比方说,这两个模块都调用一个名为foobar的函数,并且foobar函数存在于两个JS脚本文件中。但是,每个JS脚本文件中的foobar行为是不同的,因此每个模块不能使用另一个模块的foobar函数-这样做会导致模块失败。在这种情况下,根据您的解释,函数foobar将是不明确的,其中一个模块将失败-是否正确?当两个加载的文件定义相同的函数时,会发生JavaScript中通常发生的情况:从上次加载的文件定义的函数将覆盖先前定义的函数。显然,在这种情况下,其中一个模块不能正常工作,因为它的JavaScript代码没有执行预期的功能。感谢您的澄清!据我所知,这两个JS脚本文件都是全局可访问的。然后,如果两个JS脚本文件都有同名但行为不同的函数,会发生什么情况?比方说,这两个模块都调用一个名为foobar的函数,并且foobar函数存在于两个JS脚本文件中。但是,每个JS脚本文件中的foobar行为是不同的,因此每个模块不能使用另一个模块的foobar函数-这样做会导致模块失败。在这种情况下,根据您的解释,函数foobar将是不明确的,其中一个模块将失败-是否正确?当两个加载的文件定义相同的函数时,会发生JavaScript中通常发生的情况:从上次加载的文件定义的函数将覆盖先前定义的函数。显然,在这种情况下,其中一个模块不能正常工作,因为它的JavaScript代码没有执行预期的功能。感谢您的澄清!