如何修改 Google Chrome 的 <object> 数据属性?

How to modify <object> data attribute for Google Chrome?

提问人:CooleKikker2 提问时间:3/14/2022 最后编辑:CooleKikker2 更新时间:3/14/2022 访问量:211

问:

我正在尝试更改 id 为“previewImage”的元素的数据属性。我通过对另一个文件进行 Ajax 调用来修改属性,并取回数据。除 Google Chrome 外,所有浏览器都显示从 AJAX 调用(图像或 PDF)(编码的 base64)接收的数据。有解决方案吗?

我之前看到了这个答案,但我认为它已被弃用(它对我不起作用):<object> 适用于除 Google Chrome 之外的所有浏览器

阿贾克斯电话:

function getFile(id, r = false)
{
    timer = setTimeout(function(){
        $.ajax({
            url: "/project/getFile",
            method: "POST",
            data: {id: id}
        })
            .done(function(data)
            {
                $('#previewImage').prop('data', data);
            })
    }, 100)
}

对象:

<object id="previewImage" class="w-100" style="min-height: 500px">
JavaScript HTML AJAX Google-Chrome 对象

评论

1赞 CBroe 3/14/2022
您为此使用对象的任何具体原因 - 而不仅仅是元素?img
0赞 CooleKikker2 3/14/2022
是的,getFile() 方法也有可能返回 PDF 文件。编辑了问题以使其更清晰!
0赞 CBroe 3/14/2022
当您尝试而不是 ?或者取消引用你的jQuery对象来获取本机HTMLObjectElement,然后直接分配该属性,这有帮助吗?即,attrprop$('#previewImage')[0].data = data;
0赞 CooleKikker2 3/14/2022
感谢您的帮助!我仍然有同样的问题,适用于所有浏览器,除了 Google Chrome,两种解决方案
0赞 zer00ne 3/14/2022
由于该对象最初没有 data 属性,因此请按照 CBroe 的建议尝试或取消引用: .建立属性后,将其视为属性和 。jQuery对这种属性/属性关系很严格,JS则不然。.attr()$('#previewImage')[0].setAttribute('data', data).prop()[0].data =

答:

0赞 CooleKikker2 3/14/2022 #1

感谢大家的帮助!我将对象标签更改为 Iframe,女巫做了以下操作:

<iframe id="previewImage" class="w-100" height="500px"></iframe>

AJAX 调用几乎保持不变:

function getFile(id, r = false)
    {
        timer = setTimeout(function(){
            $.ajax({
                url: "/project/getFile",
                method: "POST",
                data: {id: id}
            })
                .done(function(data)
                {
                    $('#previewImage').prop('src', data);
                    $('#previewImage image').css("width: 100%")
                })
        }, 100)
    }

这对我有用!