I added this to my WordPress page
if (script.readyState && script.onload!==null){
script.onreadystatechange= function () {
if (this.readyState == 'complete') mce_preload_check();
}
}
and the &&
is being turned to
if (script.readyState && script.onload!==null){
I pasted this in WordPress HTML view and I made sure this was fine but WordPress keeps displaying this. How to address this?
You need to disable WP's autoformatting. WP will auto format even in the html editor, and the spaces and line breaks will break your javascript.
Use this plugin http://wordpress.org/extend/plugins/wp-no-format/
Update 4/08/2015: plugin is dated but still works for me.
This also works: add the plugin directly to functions.php and bracket the your javascript in <!-- noformat on -->
and <!-- noformat off -->
tags
Add to functions.php file:
function newautop($text)
{
$newtext = "";
$pos = 0;
$tags = array('<!-- noformat on -->', '<!-- noformat off -->');
$status = 0;
while (!(($newpos = strpos($text, $tags[$status], $pos)) === FALSE))
{
$sub = substr($text, $pos, $newpos-$pos);
if ($status)
$newtext .= $sub;
else
$newtext .= convert_chars(wptexturize(wpautop($sub))); //Apply both functions (faster)
$pos = $newpos+strlen($tags[$status]);
$status = $status?0:1;
}
$sub = substr($text, $pos, strlen($text)-$pos);
if ($status)
$newtext .= $sub;
else
$newtext .= convert_chars(wptexturize(wpautop($sub))); //Apply both functions (faster)
//To remove the tags
$newtext = str_replace($tags[0], "", $newtext);
$newtext = str_replace($tags[1], "", $newtext);
return $newtext;
}
function newtexturize($text)
{
return $text;
}
function new_convert_chars($text)
{
return $text;
}
remove_filter('the_content', 'wpautop');
add_filter('the_content', 'newautop');
remove_filter('the_content', 'wptexturize');
add_filter('the_content', 'newtexturize');
remove_filter('the_content', 'convert_chars');
add_filter('the_content', 'new_convert_chars');
Another option is to make a shortcode. In this example, the shortcode will only be printed if it contains the attributes x
and y
, e.g.: [myscript x="10" y="20"]
. I'm using a simple script that shows a JS alert dialog with the attributes values.
add_shortcode( 'myscript', 'sample_shortcode_so_6195635' );
function sample_shortcode_so_6195635( $atts, $content = null )
{
if( isset( $atts['x'] ) && isset( $atts['y'] ) )
{
$x = $atts['x'];
$y = $atts['y'];
// See: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
$html = <<<HTML
<button onclick="myalert()">Show Shortcode Atts</button>
<script type="text/javascript">
function myalert()
{
if( $x < 10 && $y < 20 )
alert( 'X less than 10 and Y less than 20' );
else
alert( 'other' );
}
</script>
HTML;
return $html;
}
}