0

这是我第一次将 wp_enqueue_script 用于我试图在 WordPress 网站上设置的 IDX 解决方案。我的文件路径是 child-theme/js/idx.js

我将此代码放在我的functions.php文件中:

<?php
function wptuts_scripts_with_jquery()  
{  

    // Register the script like this for a theme:  
    wp_register_script( 'custom-script', get_template_directory_uri() . '/js/idx.js',      array( 'jquery' ) );  

// For either a plugin or a theme, you can then enqueue the script:  
    wp_enqueue_script( 'custom-script' );  
}  
add_action( 'wp_enqueue_scripts', 'wptuts_scripts_with_jquery' );  ?>

以及我的 idx.js 文件中的这段代码:

<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js" type="text/javascript" ></script>
<script src="http://tools.example.com/scripts/postmessage.min.js" type="text/javascript" ></script>
<script type="text/javascript" >
$.createDynamicFrame('http://example.example.com', 'http://example.example.com/26611/Carets/search?parentUrl=' + encodeURIComponent( document.location.href ), 'MapSearch');

这无济于事。当我将 functions.php 中的 wptuts_scripts_with_jquery() 函数与其他脚本一起使用时,它似乎可以工作,但不能与 idx.js 脚本一起使用。任何帮助将非常感激。

谢谢!

4

1 回答 1

0

我不知道您为什么要尝试<script>在外部资源中包含标签,但这一切都是错误的——它们应该只包含纯 JavaScript(这是浏览器已经期待的)。

您的idx.js文件应该只包含这一行:$.createDynamicFrame(...


关于为什么不包含这个错误文件的原因 - 在 Wordpress 中排队脚本时作为参数传递的数组是依赖项列表。我假设既然你试图在你的 JS 文件中包含 jQuery - 那么它之前没有被模板加载过?在这种情况下,因为您没有将jQuery 加入队列- “自定义脚本”没有所有必需的组件,因此它不会被推送到页面上

默认情况下,wordpress 已经注册了一个 jQuery 版本——如果为了 CDN 偏好(或向后兼容)你需要使用不同的版本,那么你应该wp_deregister_script使用你想要的版本重新排队。否则,您的函数应如下所示:

function wptuts_scripts_with_jquery(){
  $path = get_template_directory_uri();
  wp_enqueue_script('jquery');
  wp_enqueue_script('custom-script', "{$path}/js/idx.js", array('jquery'));  
} 

由于什么都不存在,tools.example.com/scripts/postmessage.min.js所以我将其排除在外。另请注意,您可以在单个语句中注册入队。wp_enqueue_script

于 2013-04-10T19:09:35.063 回答