как обрабатывать целевой атрибут базового тега в iphone uiwebview, чтобы открыть новое окно - PullRequest
2 голосов
/ 07 апреля 2010

Когда ссылки должны открывать новое окно, iphone uiwebview не будет вызывать событие, когда пользователь щелкает эти ссылки. Нам пришлось использовать javascript, чтобы проделать некоторый трюк с целевым атрибутом ссылок.

Я могу без проблем обработать тег 'a', чтобы открыть его в окне _self. Но когда я делаю то же самое с тегом base. это не работает.

Я полагаю, что базовая цель установлена ​​JavaScript. Но базовый тег находится в голове, который может быть обработан uiwebview перед выполнением моего javascript, поэтому изменение цели может не отражаться в движке webkit .

Может кто-нибудь дать какое-нибудь предложение, чтобы я мог открыть ссылку в том же uiwebview?

Ниже приведен пример HTML, открытый в uiwebview

<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()"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...