2012-08-06 31 views
1

我有我显示在ModalWindow几个小组。在这些面板的html文件中,我在主体中有脚本标签,例如用于SyntaxHighlighter或JW Player。如果我将面板嵌入到自己的页面中,那些标签就可以工作。但是,当面板嵌入到ModalWindow中时,它们不工作。Javascript语言,HTML时,面板是一个Wicket内使用不工作ModalWindow

实施例为一个面板(HTML文件),其显示这是应该由SyntaxHighlighter的待处理的文本(这是在身体标记):

<wicket:panel> 
    <pre wicket:id="content"></pre> 
    <script type="text/javascript"> 
    SyntaxHighlighter.all(); 
    </script> 
</wicket:panel> 

我已经尝试过许多不同的事情,例如

super.show(target); 
target.appendJavaScript("SyntaxHighlighter.all();") 

重写的“show()” - ModalWindow的方法。我也玩过'renderOnDomReadyJavascript','renderOnLoadJavascript'等,但我想它必须嵌入到身体标签中,无论如何...我无法让它工作。

它的工作,如果我嵌入面板进入一个网页,并把该页面添加到ModalWindow而非面板的,但我想避免这种情况,因为它是没有必要的,在滚动问题的结果。感谢任何提示!

编辑:快速入门-例子说明这个问题:Download

回答

0

的解决这个问题的图示in this other answer。必须使用方法highlight()来代替all()。

0

我认为问题是,当你与专家组的工作你没有使用的JavaScript函数正确声明。换句话说,当你直接在ModalWindow中使用嵌入时,在你的例子中没有定义对象SyntaxHighlighter。 检查面板的页面,看看它是否定义了导览面板使用的一些JavaScript库。

+0

嗨安德烈(再次;-)),所需要的JavaScript和CSS引用通过重写renderHead(...)来确定。我在Panel本身以及我添加到Panel中的行为中尝试了这一点。当我在浏览器中查看源代码时,所有必需的JS和CSS文件都在HEAD标签中。它不工作,只是当我把面板放入自己的页面,但不在ModalWindow这就是为什么我很困惑。 – Blacklight 2012-08-07 16:16:57

+0

你的浏览器中没有任何JavaScript错误吗?你是否在使用某种类似FireBug的工具来检测这些沉默错误? 我非常肯定你的JavaScript被执行,我的意思是如果你用简单的警报('')替换面板内的代码,它应该被执行,对吧? – 2012-08-07 17:55:47

+0

你是对的,一个警告('测试')的作品。所以身体上的脚本实际上已经被执行了。但是,即使我将JS引用附加到标题,SyntaxHighlighter也不能工作/识别。就像我所说的,我甚至试图用'response.renderJavaScriptReference(“/ media/js/shCore.js”)等东西来覆盖ModalWindow的renderHead(...)方法等。它不工作,但我确实找到在父页面的头部需要引用。我不知道了:( – Blacklight 2012-08-07 19:46:20