在XPages中使用引导滑块无法显示工具提示
我试图在我的XPages应用程序中使用引导滑块项目。它似乎工作正常,但当我将其加载到XPage上时,工具提示从未显示。它可以在同一个.nsf中的html文件中正常工作。下面是位于的html代码,它可以工作在XPages中使用引导滑块无法显示工具提示,xpages,Xpages,我试图在我的XPages应用程序中使用引导滑块项目。它似乎工作正常,但当我将其加载到XPage上时,工具提示从未显示。它可以在同一个.nsf中的html文件中正常工作。下面是位于的html代码,它可以工作 <html lang="en"> <head> <link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.extlib/responsive/bootstrap3/css/bootstrap.min
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.extlib/responsive/bootstrap3/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.extlib/responsive/bootstrap3/css/bootstrap-theme.min.css">
<script type="text/javascript" src="/xsp/.ibmxspres/.extlib/responsive/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/xsp/.ibmxspres/.extlib/responsive/bootstrap3/js/bootstrap.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="/Sliders.nsf/slider/bootstrap-slider.js"></script>
<link rel="stylesheet" type="text/css" href="/Sliders.nsf/slider/bootstrap-slider.min.css">
</head>
<body>
<BR><BR><BR>
<input id="ex8" data-slider-id='ex1Slider' type="text" data-slider-min="0" data-slider-max="20" data-slider-step="1" data-slider-value="14" data-slider-tooltip="always"//>
<script type='text/javascript'>
$(document).ready(function() {
$('#ex8').slider({
formatter: function(value) {
//console.log(value);
return 'Current value: ' + value;
}
});});
</script>
</body>
</html>
$(文档).ready(函数(){
$('#ex8')。滑块({
格式化程序:函数(值){
//console.log(值);
返回“当前值:”+值;
}
});});
下面是XPage代码,它显示了滑块,但从未显示工具提示。。。我能想到的唯一一件事是Dojo正在碍事,但却不知道如何调试它?这是在。请注意,没有工具提示
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:script
src="slider/bootstrap-slider.js"
clientSide="true">
</xp:script>
<xp:styleSheet href="slider/bootstrap-slider.min.css"></xp:styleSheet>
<xp:styleSheet href="/sliderCustom.css"></xp:styleSheet>
</xp:this.resources>
<div class="container">
<xp:br></xp:br>
<xp:br></xp:br><xp:br></xp:br><xp:br></xp:br><xp:br></xp:br><xp:br></xp:br><xp:br></xp:br>
<div class='slider-example'>
<h3>Example 1:</h3>
<p>Basic example with custom formatter.</p>
<input
id="ex8"
data-slider-id='ex1Slider'
type="text"
data-slider-min="0"
data-slider-max="20"
data-slider-step="1"
data-slider-value="14"
data-slider-tooltip="always"
/>
</div>
</div>
<script type='text/javascript'>
$(document).ready(function() {
$('#ex8').slider({
formatter: function(value) {
//console.log(value);
return 'Current value: ' + value;
}
});});
</script>
</xp:view>
例1:
自定义格式化程序的基本示例
$(文档).ready(函数(){
$('#ex8')。滑块({
格式化程序:函数(值){
//console.log(值);
返回“当前值:”+值;
}
});});
有人有线索吗?在没有工具提示的情况下使用这些工具对用户不是很友好
谢谢
Howard这很可能与Javascript文件的加载顺序以及“AMD”加载冲突/问题有关。我还不了解问题的内部运作,但我知道一些解决办法 以下是Johnny Oldenburger的一篇博客文章,描述了与引导插件相关的问题: 下面是Ferry Kranenburg的xsnippet,它解释了如何加载不受AMD加载程序影响的javascript文件。 下面是一个来自svenhasselbach的示例,它确保在dojo之前加载脚本 这里有一个由Sven提供的高级解决方案,您可以控制所有javascript文件的“行踪”,例如,它们是否应该在dojo之前加载、禁用AMD、页面加载时加载等。 我最好的猜测是xsnippet对您来说是最容易实现的,但我不能100%确定它是否有效(因为对于javascript,我总是觉得我在猜测!),但是请让我们知道它是否有效 将this.resources脚本替换为:
<xp:this.resources>
<!-- temporary redefine define.amd object (Dojo AMD loader) -->
<xp:script clientSide="true" type="text/javascript">
<xp:this.contents><![CDATA[${javascript:"if (typeof define === 'function' && define.amd) {if(define.amd.vendor =='dojotoolkit.org'){define._amd = define.amd;delete define.amd;}}";}]]></xp:this.contents>
</xp:script>
<!-- load jquery AMD enabled widgets -->
<xp:script src="slider/bootstrap-slider.js" clientSide="true"></xp:script>
<!-- restore define.amd object (Dojo AMD loader) -->
<xp:script clientSide="true">
<xp:this.contents><![CDATA[${javascript:"if (typeof define === 'function' && define._amd) {define.amd = define._amd; delete define._amd;}"}]]></xp:this.contents>
</xp:script>
</xp:this.resources>
这很可能与Javascript文件的加载顺序以及“AMD”加载冲突/问题有关。我还不了解问题的内部运作,但我知道一些解决办法 以下是Johnny Oldenburger的一篇博客文章,描述了与引导插件相关的问题: 下面是Ferry Kranenburg的xsnippet,它解释了如何加载不受AMD加载程序影响的javascript文件。 下面是一个来自svenhasselbach的示例,它确保在dojo之前加载脚本 这里有一个由Sven提供的高级解决方案,您可以控制所有javascript文件的“行踪”,例如,它们是否应该在dojo之前加载、禁用AMD、页面加载时加载等。 我最好的猜测是xsnippet对您来说是最容易实现的,但我不能100%确定它是否有效(因为对于javascript,我总是觉得我在猜测!),但是请让我们知道它是否有效 将this.resources脚本替换为:
<xp:this.resources>
<!-- temporary redefine define.amd object (Dojo AMD loader) -->
<xp:script clientSide="true" type="text/javascript">
<xp:this.contents><![CDATA[${javascript:"if (typeof define === 'function' && define.amd) {if(define.amd.vendor =='dojotoolkit.org'){define._amd = define.amd;delete define.amd;}}";}]]></xp:this.contents>
</xp:script>
<!-- load jquery AMD enabled widgets -->
<xp:script src="slider/bootstrap-slider.js" clientSide="true"></xp:script>
<!-- restore define.amd object (Dojo AMD loader) -->
<xp:script clientSide="true">
<xp:this.contents><![CDATA[${javascript:"if (typeof define === 'function' && define._amd) {define.amd = define._amd; delete define._amd;}"}]]></xp:this.contents>
</xp:script>
</xp:this.resources>
问题是xsp mixin.css中的一个类。。。它被称为。工具提示,顶部为:-10000px,因此隐藏了工具提示 修复方法是将以下内容添加到css文件中
/*fix to override the xsp css that screws up the slider */
.slider .tooltip {
top: 0px !important;
}
现在效果很好!Howard问题是xsp mixin.css中的一个类。。。它被称为。工具提示,顶部为:-10000px,因此隐藏了工具提示 修复方法是将以下内容添加到css文件中
/*fix to override the xsp css that screws up the slider */
.slider .tooltip {
top: 0px !important;
}
现在效果很好!Howard我已经通过修改js文件来防止AMD,从而修复了AMD问题。所以,这不是问题所在。但是,我将尝试在使用Sven的方法加载dojo之前加载它。按照Sven的方法首先加载bootstrap-slider.js不起作用。它根本没有被加载。我已经通过修改js文件来修复AMD问题,以防止AMD。所以,这不是问题所在。但是,我将尝试在使用Sven的方法加载dojo之前加载它。按照Sven的方法首先加载bootstrap-slider.js不起作用。它根本没有加载。好的,这是有道理的!我应该意识到,如果滑块工作了一半,js肯定加载得很好:)请确保您接受您的答案,并以回答的方式结束此问题OK,这很有意义!我应该意识到,如果滑块工作了一半,js肯定加载得很好:)请确保您接受您的答案,并按回答结束此问题