web-dev-qa-db-ja.com

Joomla 3.4.1 jQueryで呼び出されたJCaptionを削除するには?

JCaptionをヘッド、jquery、jcaptionファイルから削除したいのですが、次の方法で非アクティブ化しました。

unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-noconflict.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-migrate.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/system/js/caption.js']);

Mootoolsを使用する必要がある以前のバージョンでjcaptionを削除するには、次の手順を実行します。

$this->_script = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script);

私もjqueryで削除しようとしましたが、preg_replace()の経験がないので、JCatpionを頭から削除するにはどうすればよいですか?

私のコード:

$this->_script = preg_replace('%jQuery\(window\)\.on(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\');\s*}\);\s*%', '', $this->_script);
10
xxx

これは非常に古い質問であり、おそらくもう誰も読んでいないでしょうが、とにかく私は私の答えを投稿します。

JQueryキャプションの正規表現でエラーが発生しました。ドットをエスケープする必要はありませんが、特殊文字をエスケープする必要があります。また、配列内の正しいキーをターゲットにする必要があるため、スクリプトオブジェクトを呼び出した後に['text/javascript']を追加する必要があります。

したがって、正しいregex/preg_replaceは次のようになります。

$this->_script['text/javascript'] = preg_replace('%jQuery\(window\).on\(\'load\',\s*function\(\)\s*\{\s*new\s*JCaption\(\'img.caption\'\)\;\s*\}\)\;\s*%', '', $this->_script['text/javascript']);

少し前まで私は正規表現にも苦労していましたが、このサイトは大いに役立ちました: http://regexr.com/ サイトを試す場合は、openを使用する必要はなく、既に自動的に存在するため、タグを閉じます。

5
Laci K

これを試して:

$this->_scripts = array();
unset($this->_script['text/javascript']);
4
Sahil Purav

これを試して:

if (isset($this->_script['text/javascript']))
{ $this->_script['text/javascript'] = preg_replace('%window\.addEvent\    (\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%',     '', $this->_script['text/javascript']);
if (empty($this->_script['text/javascript']))
unset($this->_script['text/javascript']);}
$this->_scripts = array();
2
stckvrw

プラグインを使用して挿入されたスクリプトタグの設定を解除する場合は、次の方法が役立ちます。

public function onBeforeRender() {
    // Front end
    if ($this->app instanceof JApplicationSite) {
        $doc = JFactory::getDocument();

        foreach ($doc->_script as $key => $script) {
            if (stristr($key, 'text/javascript') !== false) {
                unset($doc->_script['text/javascript']);
            }
        }
    }
}
0