У меня есть приложение на основе dropwizard, которое запускает веб-страницу с помощью iframe.
<iframe id="someId" name="someName"></iframe>
Пока все просто. Каждый раз, когда я перехожу на свой URL, есть iframe, который ничего не делает. Я хочу динамически установить атрибут src для этого iframe посредством вызова API rest из бэкэнда. По сути, это позволяет мне использовать некоторый код Java для возврата HTML, который читает идентификатор этого iframe и устанавливает src.
private String html = "<html>\n"
+ "<script type=\"text/javascript\">\n"
+ "function myFunction () {\n"
+ "var iframe = window.parent.document.getElementById"
+ "(\"someId\");\n"
+ " iframe.src = \"https://localhost:9999/api/someApi\"\n"
+ "}\n"
+ "window.onload = setTimeout(myFunction, 10000);\n"
+ "</script>\n"
+ "</html>";
@GET
@Path("/invokeFrame")
@Produces(MediaType.TEXT_HTML)
public Response invokeFrame()
{
return Response.ok(html).build();
}
Когда я делаю этот вызов API, он возвращает html, который находит iframe и устанавливает src. Но это не работает, потому что когда вызывается API, он перенаправляет меня на пустую страницу (от моей веб-страницы, которая содержит iframe), поэтому window.parent.document.getElementById
не читает iframe. Вместо этого это null
. Есть ли быстрый / грязный способ предотвратить перенаправление и остаться на моей странице, чтобы изменить iframe src?