【问题标题】:Include JavaScript in Perl-CGI generated page在 Perl-CGI 生成的页面中包含 JavaScript
【发布时间】:2010-11-05 17:52:18
【问题描述】:

我试图将 java 脚本添加到动态生成的页面中。 我试过这个,但它似乎不起作用。

<SCRIPT SRC=\"sorttable.js\"></SCRIPT>

我总是必须将 javacode 与 html 一起内联才能工作。 有什么线索吗?

【问题讨论】:

  • 是代码没有执行还是代码没有打印?如果它正在打印但没有执行,不要忘记在脚本元素中添加类型属性 [type="text/javascript"]。
  • 页面生成代码是什么?

标签: javascript html perl include cgi


【解决方案1】:

qq() 等效于"",但具有匹配的分隔符。如果您要输出 HTML 或 JavaScript,它将成为您的朋友。

print qq(<script type="text/javascript">alert("The world is my oyster");</script>);

请注意,您不必使用() 作为分隔符,请参阅perlop

如果您要输出构建 HTML 的 JavaScript,您应该使用 jQueryExt。但无论哪种方式,您都将处于多层次的逃避地狱中。 JSON::XS 可能会让你的生活不那么痛苦。同时了解here-documents

my $js = <<'JS';
    alert( 'The world is my oyster' );
    var $href = "example.html";
    document.write( '<a href="' + $href + '">clicky</a>' );
JS
print qq(<script type="text/javascript">$js</script>);

上述问题的棘手之处在于$href 是一个JavaScript 变量,而不是Perl 变量。 (是的,JS 标识符可能包括$。)

【讨论】:

    【解决方案2】:

    也许这个链接可能会有所帮助: http://perlmeme.org/tutorials/cgi_form.html

    它提供了将jsp函数嵌入到form-onsubmit的方法如下:

    打印 $q->start_form( -name => 'main_form', -方法=>'GET', -enctype => &CGI::URL_ENCODED,

      -onsubmit => 'return javascript:validation_function()',
      -action => '/where/your/form/gets/sent',   );
    

    还有来自 Perl5 CGI 库的以下链接 - 支持 Javascript,它是关于将 javascript 函数链接到事件。 http://cpansearch.perl.org/src/MARKSTOS/CGI.pm-3.60/cgi_docs.html#javascripting

    问候

    【讨论】:

      【解决方案3】:

      这取决于您对 WHOLE 事物的引用结构。如果您在未插值的heredoc 中打印出来,那么\" 只会产生更大的问题。

         print <<'END_HTML';
         ...
            <SCRIPT SRC=\"sorttable.js\"></SCRIPT>
         ...
         END_HTML
      

      或一个q表达式:

        print q~
         ...
            <SCRIPT SRC=\"sorttable.js\"></SCRIPT>
         ...
         ~;
      

      所以你必须展示更多你的上下文。但让我向你保证:当我以正确的方式写出标签时,我的 JavaScript 文件就会像我预期的那样被导入页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        • 2015-06-26
        • 2019-05-22
        • 1970-01-01
        相关资源
        最近更新 更多