2013-10-06 28 views
3

我目前正在訪問另一個團隊已經構建的網頁,以覆蓋應用程序中的某些功能(因此我無法更改網頁),並且遇到了一些小問題。其中一個按鈕(僅在通過Javascript才能激活)一旦滿足某些必要條件後,會在UIWebView被激活並單擊時拒絕注意。這意味着shouldStartLoadWithRequest不會被調用,我需要它來執行某些功能。我正在查看源代碼,並且該按鈕最初沒有HREF,我認爲這可能會令UIWebView混淆。有沒有人有任何想法,我怎麼能讓UIWebView注意到這個按鈕?UIWebView不調用帶動態鏈接的按鈕上的shouldStartLoadWithRequest

謝謝,
邁克

按鈕的HTML:

如果沒有一個網址:<a class="ts_btn book_btn" href="">Book</a>
如果有一個網址:<a class="ts_btn book_btn" href="/bookings/new?date=2013-10-10&amp;bus_id=2&amp;slot_number=9">Book </a>

+0

是否可以發佈涉及此按鈕的代碼?另外,'最初'是什麼意思,是激活後動態添加到元素的'href'?你能描述一下這個程序嗎? – Alladinian

+0

@Alladinian嗨,我可以得到按鈕的HTML CSS,如果你想。首先,當網頁加載時,HREF被設置爲無。但是,當用戶填寫所需的表格時,HREF會使用JavaScript更新,該JavaScript將用戶鏈接到正確的頁面。全部動態完成 – Mackey18

+0

按鈕href指向正確的網頁嗎? – CodeHelp

回答

1

如果我沒看錯你想要從UIWebView的iPhone瀏覽器中打開鏈接。意思當用戶點擊按鈕時,它將在iPhone瀏覽器中重定向。如果我是正確的比請嘗試使用下面的步驟,否則請評論下面,我錯了。我會不介意:

  1. 添加UIWebViewDelegate到您的頭類(.h文件)
  2. 添加下面的方法在你的方法類(.m文件)

    #pragma mark - Webview Delegate Methods 
    -(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType 
    { 
         if (inType == UIWebViewNavigationTypeLinkClicked) 
         { 
          [[UIApplication sharedApplication] openURL:[inRequest URL]]; 
          return NO; 
         } 
        return YES; 
    } 
    
+0

嗨,感謝您的回覆。也許我沒有正確解釋我的自我。 UIWebView中的按鈕將用戶帶到網站上的另一個頁面,但是,當發生這種情況時,不會調用「shouldStartLoadWithRequest」。 – Mackey18

+0

我覺得有什麼問題。請在UIWebView中添加URL並點擊URL。我相信上面的方法叫。如果你有一個CSS文件,而不是嘗試在其中一個webview委託方法中添加下面的代碼: – 2013-10-09 12:31:26

+0

- (void)webViewDidFinishLoad:(UIWebView *)webview NSString * path = [[NSBundle mainBundle] bundlePath]; NSString * cssPath = [path stringByAppendingPathComponent:@「style.css」]; NSString * js = [NSString stringWithFormat:@「var cssChild = document。createElement('link');「 」cssChild ='text/css';「 」cssChild ='stylesheet';「 」cssChild ='%@';「,cssPath]; js = [NSString stringWithFormat:@ 「%@ document.getElementsByTagName('head')[0] .appendChild(cssChild);」,js]; [webview stringByEvaluatingJavaScriptFromString:js]; } – 2013-10-09 12:31:42

2

一種方法可能是修改webview中的href,使用stringByEvaluatingJavaScriptFromString調用

NSString *js = @"document.getElementById('mybuttonid').setAttribute('href','http://www.dummylink.com/')"; 

[webView stringByEvaluatingJavaScriptFromString: js]; 

然後你可以使用

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType 

要真正忽略的鏈接,並執行您需要的功能。

+0

嗨,謝謝尼克,問題是,我不知道如何生成鏈接,這是在服務器上完成的,並且是由其他人創建的,而不是我創建的+1,因爲它越來越近了 – Mackey18

+0

您可以使用現有的按鈕代碼在 –

+0

中添加HTML嗎?是的,請檢查更新這是HTML的原始問題,我實際上已經通過每0.5秒使用javasript檢查URL來實現一個令人討厭的工作,但它確實不是nic e使用。 – Mackey18

相關問題