Render downloaded content in iframe

I can't manage to render a downloaded html file in an iframe.


The script downloads a zip file, unzips it and then I get the URI of the index.html file that has been unzipped. This works well, but when I add that uri to the iframe src it only shows a white page.


So this doesn't work:

<iframe src="file:///opt/usr/home/owner/content/Downloads/path/to/unzipped/folder/index.html" />


I tried adding the same index file to the project and render it like this which works well:

<iframe src="./test.html" />


I didn't manage to get any logs from the device since I can't connect with sdb. Anyone who can help me understand this issue? Do I need a specific permission to render downloaded content in iframes?



1 Replies
Olivia Finney

: Based on the information provided, it seems that you are having an issue with rendering a downloaded HTML file in an iframe. Here are a few things you can try to resolve this issue:

File URI Permissions: The issue may be related to permissions when using the file:/// URI protocol. Some browsers have security restrictions that prevent the rendering of local files in an iframe for security reasons. This could be the reason why it works when you use ./test.html (a relative path within your project) but not when using the full file path.

Serve the File Locally: Instead of using the file:/// URI, try serving the HTML file locally using a web server. This will allow you to use the http:// or https:// protocol, which may resolve the security restrictions. You can use a simple local web server like http-server (Node.js), SimpleHTTPServer (Python), or a similar tool to serve the file.

Check Cross-Origin Policy: Ensure that the downloaded HTML file does not have any cross-origin restrictions that could prevent it from being loaded in the iframe. Check the HTML file for any <meta> tags or headers that might be setting cross-origin policies.

Debugging Techniques:

Try opening the HTML file directly in a browser to see if it's rendering correctly without the iframe.
Use your browser's developer tools to inspect the iframe and check for any error messages or console logs that might provide more information about the issue.
If possible, try to connect to the device and retrieve the logs to see if they provide any insights into the problem.
Consider Alternative Approaches:

Instead of using an iframe, you could try rendering the downloaded HTML content directly in your application, either by loading it dynamically or by embedding it in the DOM.
Explore other options for displaying the content, such as using a built-in browser component or a dedicated HTML rendering library, depending on your application's architecture.