在JavaScript中嵌入存储为字符串的微小.swf文件

3
有没有办法从字符串中嵌入.swf文件?
情境如下:
1.我有一个小的.swf文件,想使用JavaScript动态加载到页面中。它小于1KB。
2.与其进行一次网络往返,我可以将.swf文件的内容存储为JavaScript中的字符串。
3.如果我在JavaScript中拥有这样的字符串,是否有任何方法将该字符串注入到嵌入标记中,以使.swf文件正常加载?
这种技术对于存储小的.svg图像以用作图标并直接嵌入.css文件非常有效。Flash是否也可以这样做?或者存在防止这种操作的安全问题吗?

2
这个可以使用 data url 吗? - jkd
JavaScript支持加载外部资源的唯一方式是通过Data URIs或Blob URIs。这些URIs被有效地视为外部资源,可以在相关的'src'属性中使用。 - user2864740
1个回答

1

在现代浏览器中,你无法使用<object><embed>标签通过data: URI包含活动内容,因为浏览器不允许这样做。

例如,像这样的内容将无法运行:

<html>
<body>
    <embed id="flash" width="200" height="200" type="application/x-shockwave-flash"></div>

    <script>
      var flashData = 'Q1dTBwAFAAB42oxUzU7bQBD+bK/tTQKBUsClQpV66IFDK9p7BQgB7SFO6nC3TLIEC//JcSk591BOHC2lUl+AN2ifoKeq175HTz2UznoTChISWNqf+ebbmdnZGZ9C+w3YP4FFDdv6JX01C/R1NJo2mis0067j+52gdxwMxPBFN4izSKyvv8Rls88k9ewHHuM/7A+i9CCIcBAMBXq5CAqxE2fFqJWehGI7CjP4p/BHiHtoBcUR8iDppzEOwyjyRK9ALylwGKVpjjTZSQqR7+ZBLOBnQS5I5Z/G6Xuy7I/UmuVpkRajTGAoRB9RmIhuMYoEDsQgTHbJKuL0ROynlYoWkfQVGoQJ/DxNC2x1u6Lo5Gm2GwWDIUodHKsLC190fDSkoK1W0HlTZsNeg57JwJ/p5TxsmSiu2zotTOeG90mD4ZQ1MIMzu09oWwnmRDBhP6EN0ZgjBSjBdMY6GtI1MzuVXDLaMvZGhvFNKy2SuMXMPTKnvBnKm+VQGMwib98JrexxuwqYezPSg/TbaCuSeSfJNqVtS7nQeM2bmK/br245aU8SoJCG15ZRW3zmnEuivoY/KLm0w+Rwy1lY4/HXjc/j8ZiAWVeearrykFQ3Zvbaim7KcTt9bkI3r9Hrcrjv2kpTd6eJrZL3AfIG2r1vUJHvkU3trmy26Umf/6UnQhUY+LxLguaoKGvnc5QhmFRO1ApGH79wVU8PbtQTFUodRqVhjC/QizRhX1wAU+ghQbaKgxmN69tprTC+eJPToHmqWiLVLMk3EVm1t9hZuocvdVwpGF/2nMn9HVUWxhqWqyZ7tHqVfmzSRXUizilAZ5ptSMXKawcbxh5tz56Sjdb+Vnfbb229dVEchcNr/52qn6s+lRl3Jn07ta9Xz2N4DjZJ/AcAAP//AwAfU9Bc';

      var flashObject = document.getElementById('flash');
      flashObject.src = 'data:application/x-shockwave-flash;base64,' + flashData;
    </script>
</body>
</html>

你并不是在开玩笑,这样做行不通... 它跳过了整个“将插件嵌入到HTML页面”的过程。我认为他们必须编辑一些工具中的行,比如swfObject.js文件,告诉它期望嵌入的数据而不是文件名。 - VC.One

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接