开发者

Javascript RegEx replacing "

I'm trying to patch the Drupal Panels module to fix this nasty issue, which makes the AJAX errorhandler completely unreadable. The error handler has this:

// Replace all &lt; and &gt; by < and >
  error_text = error_text.replace("/&(lt|gt);/g", function (m, p) { 
    return (p == "lt")? "<" : ">";
  });

I've tried two approaches:

Adding

// Now replace all &quot with ' for readability, for goodness sakes, per
  // http://drupal.org/node/1124042
  error_text = error_text.replace(/&quot;/g, "'");

Modifying

// Replace all &lt; and &gt; by < and >
  error_text = error_text.replace("/&(lt|gt|quot);/g", function (m, p) { 
    return (p == "lt")? "<" : (p == "gt") ? ">" : "'";
  });

Yet neither has worked. Little help?

EDIT: When printed out to console (in FF4 or Chrome) The HTML entities are not shown. The resulting alert(""), however, looks like so:

An error occurred at /home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center.

Error Description: [ { &quot;command&quot;: &quot;settings&quot;, &quot;argument&quot;: {    &quot;basePath&quot;: &quot;/home/&quot;, &quot;admin_menu&quot;: { &quot;margin_top&quot;: 1 }, &quot;asu_webauth&quot;: { &quot;callapp&quot;:
>&quot;home&quot;, quot;onLogoutURL&quot;: &quot;http://physics-dev.asu.edu&quot; } } }, { &quot;command&quot;: &quot;css_files&quot;, &quot;argument&quot;: [ { &quot;file&quot;: &quot;/home/modules/node/node.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/system/defaults.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/system/system.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/system/system-menus.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/user/user.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/admin_menu/admin_menu.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/cck/theme/content-module.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/ctools/css/ctools.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/date/date.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/filefield/filefield.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/office_hours/office_hours.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/og/theme/og.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/panels/css/panels.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_singleframe/views_slideshow.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_thumbnailhover/views_slideshow.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/misc/farbtastic/farbtastic.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/calendar/calendar.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/cck/modules/fieldgroup/fieldgroup.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/views/css/views.css?E&quot;, &quot;media&quot;: &quot;all&quot; } ] }, { &quot;command&quot;: &quot;scripts&quot;, &quot;argument&quot;: [ &quot;/home/misc/jquery.js&quot;, &quot;/home/misc/drupal.js&quot;, &quot;/home/sites/all/modules/admin_menu/admin_menu.js&quot;, &quot;/home/sites/all/modules/og/og.js&quot;, &quot;/home/sites/all/modules/panels/js/panels.js&quot;, &quot;/home/sites/all/modules/views_slideshow/js/jquery.cycle.all.min.js&quot;, &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_singleframe/views_slideshow.js&quot;, &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_thumbnailhover/views_slideshow.js&quot;, &quot;/home/sites/all/modules/asu_webauth/asu_webauth.js&quot; ] }, { &quot;command&quot;: &quot;modal_display&quot;, &quot;title&quot;: &quot;Add content to Center&quot;, &quot;output&quot;: &quot;\x3cdiv class=\&quot;panels-add-content-modal\&quot;\x3e\x3cdiv class=\&quot;panels-section-column panels-section-column-categories\&quot;\x3e\x3cdiv class=\&quot;inside\&quot;\x3e\x3cdiv class=\&quot;panels-categories-box\&quot;\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/activity\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eActivity\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/menus\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eMenus\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/miscellaneous\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eMiscellaneous\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/page-elements\&quot; class=\&quot;ctools-use-ajax panels-modal-开发者_运维知识库add-category\&quot; title=\&quot;\&quot;\x3ePage elements\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/view-panes\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eView panes\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/views\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eViews\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/widgets\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eWidgets\x3c/a\x3e\x3c/div\x3e\x3cdiv class=\&quot;content-type-button clear-block\&quot;\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/node/node\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Add a node from your site as content.\&quot;\x3e\x3cimg src=\&quot;/home/sites/all/modules/ctools/plugins/content_types/node/icon_node.png\&quot; alt=\&quot;\&quot; title=\&quot;\&quot; width=\&quot;16\&quot; height=\&quot;16\&quot; /\x3e\x3c/a\x3e\x3cdiv\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/node/node\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Add a node from your site as content.\&quot;\x3eExisting node\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class=\&quot;content-type-button clear-block\&quot;\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/custom/custom\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Create a completely custom piece of HTML content.\&quot;\x3e\x3cimg src=\&quot;/home/sites/all/modules/ctools/images/no-icon.png\&quot; alt=\&quot;\&quot; title=\&quot;\&quot; width=\&quot;16\&quot; height=\&quot;16\&quot; /\x3e\x3c/a\x3e\x3cdiv\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/custom/custom\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Create a completely custom piece of HTML content.\&quot;\x3eNew custom content\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class=\&quot;panels-categories-description\&quot;\x3eContent options are divided by category. Please select a category from the left to proceed.\x3c/div\x3e\x3c/div\x3e&quot; } ]


str.replace(/&(l|g|quo)t;/g, function(a,b){
    return {
        l   : '<',
        g   : '>',
        quo : '"'
    }[b];
})


remove the quotes around the regex

  error_text = error_text.replace(/&(lt|gt|quot);/g, function (m, p) { 
    return (p == "lt")? "<" : (p == "gt") ? ">" : "'";
  });

demo http://jsfiddle.net/gaby/mfmkc/


This should work:

var str = '&lt;span&gt;&quot;error&quot;&lt;/span&gt;';
str.replace(/&(lt|gt|quot);/g, function(m, t) {
  switch (t) {
  case 'lt':
    return '<';
  case 'gt':
    return '>';
  case 'quot':
    return '\'';
  }
});

It returns "<span>'error'</span>"

If that's not working, then perhaps your original string contains &amp;lt; instead of &lt;, etc...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜