覆盖Salesforce页面中的标准按钮

时间:2012-04-25 14:08:22

标签: javascript salesforce apex-code visualforce

我正在尝试覆盖Salesforce页面中的标准按钮(删除)。我用Visualforce页面覆盖了它,但我遇到的问题是弹出窗口阻止程序。

覆盖按钮的目的是询问用户是否要删除该文件并在第三方主机上进行删除。

有什么方法可以阻止弹出窗口阻止程序或使用其他重写方法? 我的visualforce页面包含一个js脚本,它将打开一个弹出窗口。我想知道我是否可以将这个js脚本放在不同的地方!

<apex:page standardController="" showheader="false" sidebar="false"> 
    <apex:includeScript value=""/>
    <apex:includeScript value=""/>
        <script language="javascript"> 
            var caseStatus = "{!s__c}";
            try{
                sforce.connection.sessionId = "{!$Api.Session_ID}";
                var isPortalUser = sforce.apex.execute('e','r',{}); 
            }catch(e) {
                alert(e)
            }

                if(caseStatus == "A"){
                window.open('{!$Label.FTP_Attachment_Pro_URL}/sforce/ftp/Delete.aspx?ID={!ENZ__FTPAttachment__c.Id}&OrgID={!$Organization.Id}&SFUrl={!$Label.API_URL}/{!$Organization.Id}&SFSessionID={!$Api.Session_ID}',500,600);
            window.location = '{!$Label.SF_Base_URL}/{!ENZ__FTPAttachment__c.Case__c}';

            }
               else{
                    window.location = '{!$La}';
                    window.alert("a"+ caseStatus);
                } 

    </script> 
</apex:page>

1 个答案:

答案 0 :(得分:1)

不要使用window.open,因为它可以被阻止,因为它是一个弹出窗口。

如果您不想要花哨的确认框,可以使用javascript确认功能

if (confirm('are you sure you want to delete?')) {
  // delete
} else {
  // error
}

如果您需要花哨的方式请求它使用模式框而不是http://jqueryui.com/demos/dialog/上看到的网上有许多易于使用并且可以与其他库一起工作或没有任何库(jqueryui链接)仅仅是为了说明对话框。

这是一个很好的演示作为确认模式框(页面上的最后一个演示)

http://www.ericmmartin.com/projects/simplemodal-demos/