1

我有一个 Wordpress 网站,它最终是一个流媒体广播网站。在标题上,我有一个脚本,该脚本从我的专用服务器的 CP 中提取流数据(如听众数量和当前正在播放)..(Centova Cast)

我在function.php中注册了脚本:

这是寄存器

wp_register_script('streaminfo', 'http://94.23.250.14:2199/system/streaminfo.js',false,null); wp_enqueue_script('streaminfo');

这是供您查看的整个 jQuery 部分。

/* ------------------------------------

:: INITIATE JQUERY / STYLING

------------------------------------ */

function init_dynscripts() {
    if (!is_admin()) {

        if ( function_exists('bp_is_blog_page')) {
            if (!bp_is_blog_page()) {
                wp_enqueue_script( 'bp-js', BP_PLUGIN_URL . '/bp-themes/bp-default/_inc/global.js', array( 'jquery' ) );
            }
        }

        wp_register_style('northvantage-style', get_bloginfo('stylesheet_url'),false,null);
        wp_enqueue_style('northvantage-style');


        if(get_option('enable_responsive')!='disable') :

        wp_register_style('northvantage-responsive', get_template_directory_uri().'/stylesheets/responsive.css',false,null);
        wp_enqueue_style('northvantage-responsive');

        endif;  

        wp_enqueue_script('jquery-ui-core',false,null);
        wp_enqueue_script('jquery-ui-tabs',false,null);
        wp_enqueue_script("jquery-ui-accordion",false,null);
        wp_enqueue_script("swfobject",false,null);
        wp_deregister_script("jquery-effects-core");

        wp_deregister_script('libertas');   
        wp_register_script('libertas',get_template_directory_uri().'/js/nv-script.pack.js',false,null);
        wp_enqueue_script('libertas');  
        wp_register_script( ’streaminfo’, 'http://94.23.250.14:2199/system/streaminfo.js',false,null);
        wp_enqueue_script( ’streaminfo’ );
        wp_register_script( ’jpie’, get_template_directory_uri().'/js/jpie.js',false,null);
        wp_enqueue_script( ’jpie’ );
        wp_register_style('jpiestyle', get_template_directory_uri().'/jpie.css',false,null);
        wp_enqueue_style('jpiestyle');


        if(get_option('jwplayer_js')) { // Check jw player javascript file is present

        $NV_jwplayer_js = get_option('jwplayer_js');

        wp_deregister_script( 'jw-player' );    
        wp_register_script( 'jw-player', $NV_jwplayer_js,false,null);
        wp_enqueue_script( 'jw-player' );       
        }
    }
}    
add_action('init', 'init_dynscripts',100);


function _remove_script_version( $src ){ // remove script version
    $parts = explode( '?', $src );
    return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

看来我在 streaminfo.js 和我的网站之间存在冲突。元素检查给出:

未捕获的类型错误:对象 [object Window] 的属性“$”不是函数

简而言之……我尝试使用该文件的所有操作都以错误告终。

我尝试将文件中的每个 $ 符号更改为 jQuery,它消除了冲突,但与其他文件产生了冲突。

我尝试添加

jQuery(文档).ready(函数($){

到文件的头部,但它破坏了 CP 上的其他元素。

最终我运行了一个简单的测试并创建了一个只有这段代码的网页:

<html>
<body>
<span id="cc_strinfo_title_tranceilfm" class="cc_streaminfo"></span>
<script language="javascript" type="text/javascript" src="http://94.23.250.14:2199/system/streaminfo.js"></script>
</body>
</html>

并且页面没有返回任何错误。(我确实包含了 google jQuery 文件的路径)

Wordpress 中的某些东西弄乱了 jQuery 插件?或者我的代码中缺少某些字符串?

www.tranceil.fm

4

1 回答 1

4

尝试jQuery.noConflict()在文档顶部添加。准备好。这将取消绑定$变量,从而消除您的冲突。

为了回应我们在评论中的讨论,并帮助其他看到这个问题的人,这里有一些概述:

jQuery 和 jQuery.noConflicts() 是如何工作的:

当您加载 jQuery 库时,jQuery会创建一个名为的变量,它代表“jQuery”函数。还创建了一个jQuery名为的别名。$

无论出于何种原因,其他几个 javascript 库都会更改$别名以表示它们自己的函数。发生这种情况时,您就会发生冲突,因为两个不同的事物试图控制该$变量。jQuery.noConflict() 所做的是$与取消关联jQuery,允许任何其他尝试$使用的东西自由使用它。

问题是现在$不引用jQuery,所以在任何你想访问 jQuery 对象的地方,你都需要使用jQuery而不是$.

于 2012-08-01T17:08:54.617 回答