0

有没有办法检查 sfContext 是否已经添加了 jQuery 库,使用:

sfContext::getInstance()->getResponse()->addJavascript('/js/jquery-1.4.2.min.js');

或者

addJavascript('jquery-1.4.2.min.js', sfView::getContext());

或者

use_javascript('jquery-1.4.2.min.js');

在模板中?

在我看来,添加更多 jQuery 会阻止他们的行动。

4

1 回答 1

2

您应该使用自己的支票。

  1. 用你自己的sfWebResponse
  2. 覆盖addJavascript
  3. 添加支票

myWebResponse.class.php因此,使用以下代码在文件夹中创建一个新文件/lib/response/(创建它):

class myWebResponse extends sfWebResponse 
{
  public function addJavascript($file, $position = '', $options = array())
  {
    $this->validatePosition($position);

    // check if the file to add is jquery
    // nb: you might update the regex 
    if (preg_match('/jquery/i', $file))
    {
      // retrieve all loaded js
      $files = array_keys($this->getJavascripts());

      // check if one them containt jquery
      // nb: you might update the regex 
      $isJquery = preg_grep("/jquery/i", $files);

      // jquery found so do not add the file
      if ( ! empty($isJquery))
      {
        return;
      }
    }

    $this->javascripts[$position][$file] = $options;
  }

然后,默认使用您的新回复。在您的apps/frontend/config/factories.yml中,添加:

all:
  response:
    class: myWebResponse 

你完成了。

于 2012-05-30T10:12:16.147 回答