获取错误对象不支持CRM 2011中的Web资源中的属性或方法“setSrc”

时间:2013-04-06 06:24:22

标签: javascript dynamics-crm-2011 dynamics-crm crm onload

我在页面上使用了WebResource,我收到错误对象不支持Javascript中的属性或方法'setSrc'

你能帮我吗

我的实际代码是这样的

function getImage()
{
var entityId = Xrm.Page.data.entity.getId();
var profilePictureElement = Xrm.Page.getControl("WebResource_ProfilePicture");
if (entityId) {
    var oDataQuery = getServerUrl() + "/XRMServices/2011/OrganizationData.svc" +
        "/AnnotationSet?$top=1&$select=AnnotationId,DocumentBody,MimeType&" +
        "$orderby=ModifiedOn desc&$filter=ObjectId/Id eq guid'" + entityId +
        "' and IsDocument eq true and Subject eq 'Profile Picture'" +
        " and startswith(MimeType,'image/') ";

    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: oDataQuery,
        beforeSend: function (request) { request.setRequestHeader("Accept", "application/json"); },
        success: function (data, textStatus, request) {
            if (data.d.results.length > 0) {
                var mimeType = data.d.results[0].MimeType;
                var body = data.d.results[0].DocumentBody;
                // set src attribute of default profile picture web resource.
                // here we use DataURI schema which has 32kb limit in IE8 and doesn't support IE <= 7.
                profilePictureElement.setSrc("data:" + mimeType + ";base64," + body);

            }
        },
        error: function (request, status, exception) { }
    });
  }
}
function getServerUrl()
{
var serverUrl = Xrm.Page.context.getServerUrl();
// trim trailing forward slash in url
return serverUrl.replace(/\/*$/, "");
}

你可以参考这里的http://blogs.msdn.com/b/crm/archive/2011/09/28/displaying-a-contact-s-facebook-picture-in-microsoft-dynamics-crm-2011.aspx?CommentPosted=true#commentmessage

整篇文章

1 个答案:

答案 0 :(得分:1)

现在看来,只有在引用HTML内容时,方法getSrcsetSrc才能用于Web资源。

如果网络资源是图片,则crm将使用img标记来显示图片。

如果您想使该代码正常工作,您需要检索img元素并手动分配src属性:

而不是

profilePictureElement.setSrc("data:" + mimeType + ";base64," + body);

你需要写

var profilePicture = document.getElementById("WebResource_ProfilePicture");
profilePicture.setAttribute("src","data:" + mimeType + ";base64," + body);

注意:这是不受支持的自定义