Android WebView - 从另一个iframe中的一个iframe访问类

Kry*_*ian 11 javascript iframe jquery android webview

我们有一个本机ios应用程序,它显示带有HTML网页和两个iframe的Web视图.在这些iframe中,我们从位于应用程序资源中的HTML文件中显示我们的文章.在文章中,通常有javascript脚本同时在两篇文章上运行.例如,将文本的某些部分设为粗体.为此,它列出了具有特定类的所有元素并修改其CSS样式.

$(".question").length()
Run Code Online (Sandbox Code Playgroud)

会返回.questioniOS上两个iframe中带有class的元素数量,它只返回Android上当前iframe的元素."当前"是指用户与之交互以启动脚本的那个.

我们还要求发布一个Android应用程序.这一切都很顺利,直到我测试了一篇文章,其中javascript必须在两个iframe上运行.不幸的是,它只能访问一个iframe中的元素.

有没有什么方法可以让它工作而不改变附加到文章的javascripts的代码?我没有权限[除了它可能是成千上万的文章与大量的自定义javascripts更新].

谢谢

g7p*_*pro 1

这就是我处理类似案例的方法

webview.loadDataWithBaseURL("file:///android_asset/", your_html_as_string_here, "text/html", "utf-8", null);
webview.getSettings().setJavaScriptEnabled(true); // enable javascript
            webview.addJavascriptInterface(new WebViewJavaScriptInterface(getActivity()), "app");
Run Code Online (Sandbox Code Playgroud)

并且必须创建一个内部类并调用与 javascript 接口中提到的相同的函数作为“app.function1”

public class WebViewJavaScriptInterface {

        private Context context;

        /*
         * Need a reference to the context in order to sent a post message l
         */
        public WebViewJavaScriptInterface(Context context) {
            this.context = context;
        }

        /*
         * This method can be called from Android. @JavascriptInterface
         * required after SDK version 17.
         */

        @JavascriptInterface
        public void function1() {
            ll_translucent.setVisibility(View.VISIBLE);
        }

        /*
                * This method can be called from Android. @JavascriptInterface
                * required after SDK version 17.
                */
        @JavascriptInterface
        public void function2() {
            new CommonActions(getActivity()).showSnackToast(verticalSeekBar, "Purchase Episode to read Further");
        }
    }
Run Code Online (Sandbox Code Playgroud)