在Drupal站点的一个页面上插入javascript小部件

在Drupal站点的一个页面上插入javascript小部件,javascript,drupal,widget,Javascript,Drupal,Widget,我有一个javascript小部件,可以插入普通的旧html页面,如下所示: <html> <head> <script type='text/javascript' src="http://example.com/widget.js"></script> </head> <body> <script type='text/javascript'>

我有一个javascript小部件,可以插入普通的旧html页面,如下所示:

<html>
    <head>
        <script type='text/javascript' src="http://example.com/widget.js"></script>
    </head>
    <body>
        <script type='text/javascript'>
            //<![CDATA[            
            try{ widget_constructor('key',500,400); }
            catch(e){ alert(e.message); }
            //]]>
        </script>
    </body>
</html>

//
我想在Drupal6站点的一个页面(不是每个页面)上插入此javascript

到目前为止,我一直在尝试在头部添加脚本标记:

  • 我将完整的HTML输入格式设置为允许php
  • 对于Drupal页面,我将输入格式设置为完整HTML
然后,我将其添加到Drupal页面正文的顶部:

<?php 
  drupal_set_html_head('<script type="text/javascript" src="http://example.com/widget.js"> </script>'); 
?>

我对Drupal不太熟悉,所以这个答案只是绕过了没有加载的小部件,没有真正回答为什么PHP块没有被解析为PHP的问题

您不需要调用
中的
标记。您可以将该行放在调用小部件构造函数的
标记的正上方

<html>
    <head>

    </head>
    <body>
        <script type='text/javascript' src="http://example.com/widget.js"></script>
        <script type='text/javascript'>
            //<![CDATA[            
            try{ widget_constructor('key',500,400); }
            catch(e){ alert(e.message); }
            //]]>
        </script>
    </body>
</html>

//

在写了所有这些之后,我解决了问题


默认情况下,完整的html输入格式打开了一个html更正过滤器,该过滤器似乎导致PHP代码出现问题。重新排序过滤器,将PHP计算器放在首位,解决了这个问题。

@Jeff:你不应该真的重新考虑这个问题。使用PHP过滤器通常是个坏主意,因为它可能会打开安全漏洞。(如果有人可以访问您的用户帐户,或者您的设置中存在错误配置,这将直接危及整个服务器)

我宁愿建议通过主题的template.php添加js。另外,正确使用的方法是drupal_add_js,带有inline选项:

下面是一些关于如何使用它的进一步阅读:

http://drupal.org/node/482542

<html>
    <head>

    </head>
    <body>
        <script type='text/javascript' src="http://example.com/widget.js"></script>
        <script type='text/javascript'>
            //<![CDATA[            
            try{ widget_constructor('key',500,400); }
            catch(e){ alert(e.message); }
            //]]>
        </script>
    </body>
</html>