我目前正在使用一个在客户端有dojo的Web应用程序。现在浏览器 IE11 我面临以下组件的滚动问题
<button dojoType="dijit.form.Button" type="submit" name="favouriteList" value="favoriteList" onclick="buttonfix(this);"/>
我面临的问题是在滚动即将到来的某些页面中,当用户向下滚动到页面按钮时(因为按钮位于页面按钮处)并单击按钮,不会触发任何操作并且页面向上滚动到顶部。。需要注意的是,只有在第一次点击按钮时才会发生这种情况。现在,如果用户再次滚动到底部并将光标放在按钮上,点击它然后相应的操作被解雇。
从我的第一次检查中我得到的印象是dojo可能是导致这个问题的原因。我尝试了以下方法:
我删除了dojoType="dijit.form.Button"
属性。它解决了问题。但不幸的是,这是不可接受的,因为在我们的项目中我们需要保持完整的道场。我们的道场版本是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>
所以,任何人都可以为我提供任何其他解决方案吗?
答案 0 :(得分:0)
我可能会误解这个问题,但是......
向上滚动可能是因为表单已发布,触发了页面的重新加载。也许您可以尝试将 onclick 更改为:
onclick =&#34; buttonfix(this);返回false&#34;
这会阻止提交。
答案 1 :(得分:0)
在dojo按钮的属性中设置scrollOnFocus:false - https://dojotoolkit.org/api/#1_10dijit_form_Button_scrollOnFocus