我目前正在使用客户端有Dojo的Web应用程序。现在对于浏览器IE11,我面临以下组件的滚动问题
<button dojoType="dijit.form.Button" type="submit" name="favouriteList" value="favoriteList" onclick="buttonfix(this);"/>
我面临的问题是在一些页面的滚动来,当用户向下滚动到页面的按钮(因为按钮在页面的按钮处)并点击按钮,不触发任何操作,页面向上滚动到顶部。.需要注意的是,这仅在第一次单击按钮时发生。现在,如果用户再次滚动到底部,将光标放在按钮上并单击它,则会触发相应的操作。
从我的第一次检查我得到的印象是dojo可能是这个问题的原因。Sop,我尝试了以下方法:我删除了dojoType="dijit.form.Button"
属性。它解决了这个问题。但不幸的是,这是不可接受的,因为在我们的项目中,我们需要保持完整的dojo。我们的dojo版本是2.1。
为我的项目的特定按钮生成的完整html如下所示:
<button name="favouriteList" tabindex="0" class="dijitReset dijitStretch dijitButtonContents" id="dijit_form_Button_9" role="button" aria-labelledby="dijit_form_Button_9_label" type="submit" waistate="labelledby-dijit_form_Button_9_label" wairole="button" dojoattachpoint="titleNode,focusNode" value="favouriteList">
<span class="dijitReset dijitInline" dojoattachpoint="iconNode">
<span class="dijitReset dijitToggleButtonIconChar">
</span>
</span>
<span class="dijitReset dijitInline dijitButtonText" id="dijit_form_Button_9_label" dojoattachpoint="containerNode">favouriteList</span>
</button>
下面是buttonfix(this)函数的代码:
<script type="text/javascript">
function buttonfix(dojoButton) {
var button;
if(dojoButton.id==""){
button = dojoButton;
} else {
button=document.getElementById(dojoButton.id)
}
for(j=0; j<button.form.elements.length; j++)
if(button.form.elements[j].tagName == 'BUTTON' )
button.form.elements[j].disabled = true;
button.disabled=false;
}
</script>
那么,有没有人能给我提供其他的解决办法呢?
2条答案
按热度按时间yeotifhr1#
我可能误解了你的问题,但是...
向上滚动可能是因为表单已发布,触发了页面的重新加载。也许您可以尝试将onclick更改为:
onclick=“按钮固定(此);返回假”
这将阻止提交。
zlwx9yxi2#
在dojo按钮的属性中设置scrollOnFocus:false-https://dojotoolkit.org/api/#1_10dijit_form_Button_scrollOnFocus