CRM 2011:使用javascript将值传递给IFRAME/Web资源

CRM 2011:使用javascript将值传递给IFRAME/Web资源,javascript,dynamics-crm-2011,Javascript,Dynamics Crm 2011,我看过几篇不同的文章,它们似乎都提出了相同的观点: “使用所需的查询参数创建url,并使用此新url设置目标iFrame,并让此新页面读取请求” 我想知道是否有一种不用自定义ASPX页面就可以做到这一点的方法 本质上,我希望根据表单上的一些值在iFrame或html web资源中动态显示一些文本。SDK中没有强制使用ASPX的内容。事实上,在CRM 2011中,这是不鼓励的,因为您需要找到一些东西来托管您的ASP.Net页面 通过一个基本的HTML页面(在CRM中创建为web资源),您可以在HT

我看过几篇不同的文章,它们似乎都提出了相同的观点:

“使用所需的查询参数创建url,并使用此新url设置目标iFrame,并让此新页面读取请求”

我想知道是否有一种不用自定义ASPX页面就可以做到这一点的方法


本质上,我希望根据表单上的一些值在iFrame或html web资源中动态显示一些文本。

SDK中没有强制使用ASPX的内容。事实上,在CRM 2011中,这是不鼓励的,因为您需要找到一些东西来托管您的ASP.Net页面

通过一个基本的HTML页面(在CRM中创建为web资源),您可以在HTML文档的头部声明一些JScript(或者更好的是,引用JScript web资源)。该JScript可以读取通过iFrame发送的querystring参数,并从中执行所需的任何操作

任何自定义querystring参数本身都必须经过编码,并通过
data
参数发送

<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>Example page</TITLE>
<META charset=utf-8></HEAD>
<BODY style="BACKGROUND-COLOR: #f6f8fa; MARGIN: 0px; FONT-FAMILY: Segoe UI" contentEditable=true onload="doStuff">
<SCRIPT type=text/jscript>

function doStuff(){
    getQueryStrings();
    alertOrganisationName();
}

function alertOrganisationName(){
    alert(window.parent.Xrm.Page.context.getOrgUniqueName());
}

function getQueryStrings() {
    var message = document.getElementById("myOutputArea");
    var dataParameterString, querystring;
    // get data from querystring
    if (window.location.search != "") {
        querystring = window.location.search.substr(1).split("&");
        for (var i in querystring) {
            querystring[i] = querystring[i].replace(/\+/g, " ").split("=");
        }
        //look for the parameter named 'data'
        for (var i in querystring) {
            if (querystring[i][0].toLowerCase() == "data") {
                dataParameterString = querystring[i][1];
                break;
            }
        }

        message.innerText += dataParameterString;

    } else {
        message.innerText = "No details were specified in the querystring.";
        alert("ERROR: " + message.innerText);
    }
}       
 </SCRIPT>
 <DIV id="myOutputArea"></DIV>
</BODY></HTML>
示例页面
函数doStuff(){
getQueryString();
AlertOrganizationName();
}
函数AlertOrganizationName(){
警报(window.parent.Xrm.Page.context.getOrgUniqueName());
}
函数getQueryString(){
var message=document.getElementById(“myOutputArea”);
var dataParameterString,querystring;
//从querystring获取数据
如果(window.location.search!=“”){
querystring=window.location.search.substr(1.split(“&”);
for(查询字符串中的变量i){
querystring[i]=querystring[i]。替换(/\+/g,“”)。拆分(“”);
}
//查找名为“data”的参数
for(查询字符串中的变量i){
if(querystring[i][0].toLowerCase()=“数据”){
dataParameterString=querystring[i][1];
打破
}
}
message.innerText+=dataParameterString;
}否则{
message.innerText=“查询字符串中未指定任何详细信息。”;
警报(“错误:+message.innerText);
}
}       

SDK中没有强制使用ASPX的内容。事实上,在CRM 2011中,这是不鼓励的,因为您需要找到一些东西来托管您的ASP.Net页面

通过一个基本的HTML页面(在CRM中创建为web资源),您可以在HTML文档的头部声明一些JScript(或者更好的是,引用JScript web资源)。该JScript可以读取通过iFrame发送的querystring参数,并从中执行所需的任何操作

任何自定义querystring参数本身都必须经过编码,并通过
data
参数发送

<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>Example page</TITLE>
<META charset=utf-8></HEAD>
<BODY style="BACKGROUND-COLOR: #f6f8fa; MARGIN: 0px; FONT-FAMILY: Segoe UI" contentEditable=true onload="doStuff">
<SCRIPT type=text/jscript>

function doStuff(){
    getQueryStrings();
    alertOrganisationName();
}

function alertOrganisationName(){
    alert(window.parent.Xrm.Page.context.getOrgUniqueName());
}

function getQueryStrings() {
    var message = document.getElementById("myOutputArea");
    var dataParameterString, querystring;
    // get data from querystring
    if (window.location.search != "") {
        querystring = window.location.search.substr(1).split("&");
        for (var i in querystring) {
            querystring[i] = querystring[i].replace(/\+/g, " ").split("=");
        }
        //look for the parameter named 'data'
        for (var i in querystring) {
            if (querystring[i][0].toLowerCase() == "data") {
                dataParameterString = querystring[i][1];
                break;
            }
        }

        message.innerText += dataParameterString;

    } else {
        message.innerText = "No details were specified in the querystring.";
        alert("ERROR: " + message.innerText);
    }
}       
 </SCRIPT>
 <DIV id="myOutputArea"></DIV>
</BODY></HTML>
示例页面
函数doStuff(){
getQueryString();
AlertOrganizationName();
}
函数AlertOrganizationName(){
警报(window.parent.Xrm.Page.context.getOrgUniqueName());
}
函数getQueryString(){
var message=document.getElementById(“myOutputArea”);
var dataParameterString,querystring;
//从querystring获取数据
如果(window.location.search!=“”){
querystring=window.location.search.substr(1.split(“&”);
for(查询字符串中的变量i){
querystring[i]=querystring[i]。替换(/\+/g,“”)。拆分(“”);
}
//查找名为“data”的参数
for(查询字符串中的变量i){
if(querystring[i][0].toLowerCase()=“数据”){
dataParameterString=querystring[i][1];
打破
}
}
message.innerText+=dataParameterString;
}否则{
message.innerText=“查询字符串中未指定任何详细信息。”;
警报(“错误:+message.innerText);
}
}       

window.onload=function(){alert(location.search);}是否适用于您?您可以设置iframe url,并在表单加载后调用javascript函数,类似于:var userId=crmForm.all.new_id.value;var detailsIframe=crmForm.all.IFRAME\u contactdetails;detailsIframe.src=detailsIframe.src+'?Id='+userID;CRM格式。。。在CRM 2011does
window.onload=function(){alert(location.search);}
中不推荐使用符号。您可以设置iframe url,并在表单加载后调用javascript函数,类似于:var userId=crmForm.all.new_id.value;var detailsIframe=crmForm.all.IFRAME\u contactdetails;detailsIframe.src=detailsIframe.src+'?Id='+userID;CRM格式。。。CRM 2011中不推荐使用符号,事实上我不需要将该示例放在一起-前面提到的SDK页面示例同样好,如果您不知道如何使用Web资源,还包括部署说明…实际上我不需要将该示例放在一起-前面提到的SDK页面示例同样好,而且如果您不知道如何使用Web资源,则包含部署说明。。。