我正在尝试创建一个Jenkins构建步骤插件。在config.jelly中,我想在页面中添加构建步骤后立即用JavaScript进行一些初始化。
我的config.jelly看起来是这样的:
<f:entry title="IP" field="ip">
<f:textbox name="ip"/>
</f:entry>
...
<script type="text/javascript">
var ipInput = document.querySelector('input[name=ip]');
// Do some intialization with ipInput.
</script>
然而,Jenkins似乎在不同阶段解析HTML和JavaScript内容,ipInput在上面的JavaScript片段中总是返回null。
我可以通过使用setTimeout()来解决这个问题,但这不是一个可靠的解决方案。
尝试在文本输入后添加:
<st:once>
<script type="text/javascript">
var ipInput = document.querySelector('input[name=ip]');
// Do some intialization with ipInput.
</script>
</st:once>
如果这不起作用,另一种方法是将javascript放在一个单独的文件中,例如在config.jelly中添加以下内容:
<st:once>
<script type="text/javascript" src="${rootURL}/plugin/yourPlugin/js/yourPlugin.js" />
</st:once>
然后在src/main/webapp下创建一个子目录js,其中包含一个文件yourPlugin.js:
window.onload=function() {
var ipInput = document.querySelector('input[name=ip]');
// Do some intialization with ipInput.
}