Javascript jQuery代码在Chrome中工作,但在IE中不工作
我正在RSA Archer平台中实现这段代码 它在Chrome中工作得很好,但在IE9中却不行Javascript jQuery代码在Chrome中工作,但在IE中不工作,javascript,jquery,google-chrome,archer,rsa-archer-grc,Javascript,Jquery,Google Chrome,Archer,Rsa Archer Grc,我正在RSA Archer平台中实现这段代码 它在Chrome中工作得很好,但在IE9中却不行 函数hideDeleteButton(){ var elId=“master\u DefaultContent\u rts\u s2487\u f6881srvgrid\u ctl00”; var el=document.getElementById(elId); var className=“GridRemoveImage”; 如果(el!=null){ var lst=el.getElements
函数hideDeleteButton(){
var elId=“master\u DefaultContent\u rts\u s2487\u f6881srvgrid\u ctl00”;
var el=document.getElementById(elId);
var className=“GridRemoveImage”;
如果(el!=null){
var lst=el.getElementsByClassName(className);
对于(var i=0;i
因为您用jquery标记了问题,所以我编写了与您提供的javascript代码等效的jquery代码
$(window).load(function() {
$("#master_DefaultContent_rts_s2487_f6881srvgrid_ctl00").find(".GridRemoveImage").hide();
});
不必通过每个元素循环来更改可见性。这段代码也具有浏览器兼容性。因为你用jquery标记了这个问题,所以我编写的jquery代码与你提供的javascript代码相当
$(window).load(function() {
$("#master_DefaultContent_rts_s2487_f6881srvgrid_ctl00").find(".GridRemoveImage").hide();
});
不必通过每个元素循环来更改可见性。此代码也将具有浏览器兼容性。此新功能应能完成以下工作:
function hidedeletebutton() {
$('#master_DefaultContent_rts_s2487_f6881srvgrid_ctl00 .GridRemoveImage').each(function() {
$(this).hide();
});
}
它的功能也一样,只是更短,使用jQuery时,这个新函数应该可以完成以下任务:
function hidedeletebutton() {
$('#master_DefaultContent_rts_s2487_f6881srvgrid_ctl00 .GridRemoveImage').each(function() {
$(this).hide();
});
}
它也一样,只是比较短,而且使用jQuery时,这个问题有几个基本方面我想介绍: 糟糕的设计 您必须隐藏“删除”按钮这一事实告诉我,您的Archer应用程序设计不正确。您需要通过角色和记录权限配置控制对记录的访问,但不能使用自定义对象代码。 如果我使用开发者工具手动激活删除按钮并删除记录,会怎么样?作为一名开发人员,您想对此负责吗? 我建议您后退两步,重新设计应用程序中的访问控制。你问的问题首先应该是我 RSA Archer平台 所有与jQuery相关的答案都没有考虑以下因素:
- 这是RSA Archer平台中使用的自定义对象(特殊类型的对象)的代码
- Archer平台生成JavaScript丰富的网页。因此,我建议您不要重载文档相关的函数,除非确实需要这样做
- 自定义对象代码在加载表单时执行,在大多数情况下不需要重写“document.load”事件处理程序
<script type="text/javascript">
document.getElementById("master_btnDelete").style.display = "none";
</script>
document.getElementById(“master\u btnDelete”).style.display=“无”;
为什么会这样?因为存储在Archer中自定义对象中的JavaScript代码将在作为表单本身的一部分加载后执行
IE特定行为
如果给定的archer应用程序有一个用于填充交叉引用的值列表的弹出对话框窗口,您实际上可能需要重写窗口加载事件。在这种情况下,包括“删除”按钮在内的工具栏按钮可能会在显示每个弹出窗口后恢复。在这种情况下,您必须使用类似的代码:
<script type="text/javascript">
// function that will hide the Delete button
function doLoad() {
alert( "The load event is executing" );
document.getElementById("master_btnDelete").style.display = "none";
}
// code that will add load event for IE and none-IE browsers
if (window.addEventListener){window.addEventListener("load",doLoad,false);}
else
if (window.attachEvent) { window.attachEvent("onload",doLoad);}
else
if (window.onLoad) { window.onload = doLoad;}
</script>
//将隐藏删除按钮的函数
函数doLoad(){
警报(“加载事件正在执行”);
document.getElementById(“master\u btnDelete”).style.display=“无”;
}
//为IE和none IE浏览器添加加载事件的代码
if(window.addEventListener){window.addEventListener(“load”,doLoad,false);}
其他的
if(window.attachEvent){window.attachEvent(“onload”,doLoad);}
其他的
如果(window.onLoad){window.onLoad=doLoad;}
不幸的是,微软与IE设计不太一致,这就是为什么你必须检查什么样的事件处理方法有效,应该使用什么样的方法。
如果您对此代码有更多问题,可以使用以下两个链接作为参考:和
现在,为什么jQuery基代码不起作用?我不知道,可能是您编写的Archer版本使用的jQuery库版本不够支持IE9。这让我想到另一点
使用Archer提供的jQuery
您在提供的原始代码示例中使用了jQuery。我建议您在为Archer编写自定义对象时不要使用任何库
祝你好运,用户3728843 这个问题有几个基本方面我想介绍: 糟糕的设计 事实上,你必须隐藏“删除”按钮告诉我,你是一个弓箭手
$(document).ready(function(){
$('#master_DefaultContent_rts_s2487_f6881srvgrid_ctl00 .GridRemoveImage').hide();
});
$(document).ready(function(){
$('#master_DefaultContent_rts_s2487_f6881srvgrid_ctl00 .GridRemoveImage').css("display", "none");
});