如何在iphone uiwebview中处理基本标记目标属性打开新窗口

时间:2010-04-07 17:08:45

标签: javascript iphone uiwebview

当链接应该打开一个新窗口时,iphone uiwebview将不会在用户单击这些链接时触发事件。我们不得不使用javascript对链接的目标属性做一些技巧。

我可以处理'a'标签在'_self'窗口打开,没有问题。但是,当我使用'base'标签以同样的方式执行此操作时。它不起作用。

我相信基本目标是由javascript设置的。但基本标记位于头部,可以在执行javascript之前由uiwebview处理,因此目标更改可能不会反映在webkit引擎中

有人可以提出一些建议,所以我可以在同一个uiwebview中打开链接吗?

以下是在uiwebview中打开的示例HTML

<html>
<head>
<base target='_blank'>
</head>
<body>
<a href='http://google.ca'>google</a>
</body>
</html> 

以下是

中要执行的代码

(void)webViewDidFinishLoad:(UIWebView *)webView

static NSString* js = @""
    "function bkModifyBaseTargets()"
     "{"
            "var allBases = window.document.getElementsByTagName('base');"
            "if (allBases)"
            "{"
                "for (var i = 0; i < allBases.length; i++)"
                "{"
                    "base = allBases[i];"
                    "target = base.getAttribute('target');"
                    "if (target)"
                    "{"
                        "base.setAttribute('target', '_self');"
                    "}"
                "}"
            "}"
    "}";
        [webView stringByEvaluatingJavaScriptFromString: js];
    [webView stringByEvaluatingJavaScriptFromString: @"bkModifyBaseTargets()"];

0 个答案:

没有答案