防止WordPress javascript冲突的好习惯?

时间:2012-08-30 21:50:16

标签: javascript wordpress conflict

我按照教程创建了自己的自定义WP主题。它们被简化为基础并且工作得很好,直到我更深入地添加脚本。每次我尝试添加新插件或涉及javascript的内容时,滑块停止工作,或者新插件不起作用。

我只是在添加插件,手动添加脚本等方面寻求有关良好编程技巧或实践的建议。

如果您将javascript手动粘贴到<head>中,是否应将其置于某些代码的上方或下方以防止冲突?

不要求分发或厨房水槽。我根本不明白添加脚本的顺序或最佳方法。这是一个示例,说明我的基本WP header.php文件在我开始添加插件之前看起来是如何工作的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    <html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<title><?php bloginfo('name'); ?><?php wp_title(); ?></title>
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" /> 
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats please -->
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo('rss_url'); ?>" />
<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="<?php bloginfo('atom_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<?php wp_get_archives('type=monthly&format=link'); ?>
<?php //comments_popup_script(); // off by default ?>
<?php wp_head(); ?>

<script type="text/javascript" src="click2call.js"></script>
<script type="text/javascript">
    function send_call() {
        document.getElementById("CallBtn").value="Dialing.."; 
        var button_id  = document.getElementById('button_id').value;
        var cid_number = document.getElementById('cid_number').value;
        var cid_name   = document.getElementById('cid_name').value;
        click2call(button_id, cid_number, cid_name);
    }
    jQuery('.sub-menu').parent().find('a:first').removeAttr('href').css('cursor','default');
</script>

3 个答案:

答案 0 :(得分:1)

通常,防止命名冲突最安全的做法是始终为您的函数和变量名称添加唯一的前缀。

假设您编写了一个名为“begin_slide()”的函数。这可能会与NUMEROUS其他插件和脚本冲突,所以如果你想确保你的 - 而且只有你的 - 被调用,你可以命名为“LITguy_begin_slide()”。

答案 1 :(得分:1)

我强烈建议您阅读Addy Osmani's extensive writeup on good namespacing patterns in JavaScript。使用立即调用的函数表达式来防止全局范围问题,并使用唯一的对象名称作为所有专有函数的前缀,这将使您的所有代码保持独立。

此外,如果您的主题具有特定的JavaScript库依赖项(如jQuery,Underscore等),您应该学习how to include things the "WordPress way"以防止在不小心包含公共库时不常出现的命名冲突。

答案 2 :(得分:0)

您可以做一些事情。

  • 您可以尝试确认插件是“ADSafe”:http://www.adsafe.org/,但有很多插件不是我仍然使用的插件。
  • 确保命名空间如下:
  

var mynamespace = namespace || {};

(function() {  
   function myClass() {  
   }  

   mynamespace.myClass = myClass();  
}());

(function(){
   mynamspace.something = {
      something : function(){
      }
   }
}());
  • 您可以尝试查看库或插件是否存在“noConflict”模式并设置该变量。
  • 尽可能避免使用Globals
  • 希望并祈祷?