2017-02-22 35 views
0

,因爲我是新來的節目我已經做了這樣的事情:加載圖像/標誌 - 一個UIWebView

- (void)completeUserFieldsForWebView:(UIWebView *)webView withUsername:(NSString *)username { 

// TextField Which has Value "email" 
NSString *loadUsernameJS = 
[NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='email']\"); \ 
for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username]; 

// TextField Which has Value "Text" if email is not found 
NSString *loadText = 
[NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='text']\"); \ 
for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username]; 
[webView stringByEvaluatingJavaScriptFromString: loadUsernameJS]; 
[webView stringByEvaluatingJavaScriptFromString: loadText]; 
} 

根據我輸入填補所有的文本字段。 。 。

- (void)completePasswordFieldsForWebView:(UIWebView *)webView withPassword:(NSString *)password { 

NSString *loadPasswordJS = 
[NSString stringWithFormat:@"var passFields = document.querySelectorAll(\"input[type='password']\"); \ 
for (var i = passFields.length>>> 0; i--;) { passFields[i].value ='%@';}", password]; 
[webView stringByEvaluatingJavaScriptFromString: loadPasswordJS]; 
} 

它填充UIWebView中某個HTML頁面中的Password參數。 。 。

問題是如何注入我自己的圖像在特定的文本框?

嘗試1:

[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');" 
     "script.type = 'text/javascript';" 
     "script.text = \"function myFunction() { " 
     "var field = document.getElementById('txtAdminPwd');" 
     "field.style.backgroundImage='url(icon1.png)';" 
     "}\";" 
     "document.getElementsByTagName('head')[0].appendChild(script);"]; 

     [webView stringByEvaluatingJavaScriptFromString:@"myFunction();"]; 

沒有獲得成功。 。 。

嘗試第2號(@ Arun的):

NSString *cssString = @".login-text-box-bg1{ background-image:url(myProjectName/Arun.png); background-position: right top; background-repeat: no-repeat; background-size: contain; }"; // 1 
     NSString *javascriptString = @"var style = document.createElement('style'); style.innerHTML = '%@'; document.head.appendChild(style)"; // 2 
     NSString *javascriptWithCSSString = [NSString stringWithFormat:javascriptString, cssString]; // 3 
     [webView stringByEvaluatingJavaScriptFromString:javascriptWithCSSString]; // 4 
  • 局部圖像超出我的項目。 。 。

先生,感謝您的努力,但它仍然沒有解決通用算法。 。 。

新的測試: 我可以通過獲得的ID或類名[inputNode getAttributeNamed:@ 「ID」] [法]現在2

,如果我做這樣的事情

[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');" 
     "script.type = 'text/javascript';" 
     "script.text = \"function myFunction() { " 
     "var field = document.getElementById('%@');" 
     "field.style.backgroundImage = 'url('icon1.png')';" 

     "}\";" 
     "document.getElementsByTagName('head')[0].appendChild(script);",[inputNode getAttributeNamed:@"id"]]; 

     [webView stringByEvaluatingJavaScriptFromString:@"myFunction();"]; 

但它拋出一個錯誤不能我們傳遞一個參數?離開:\

我實際的座右銘是展示地方形象到每一個輸入標籤(通用)

完成:

NSString *strJSInjection = [NSString stringWithFormat:@".%@{ background-image:url(https://s29.postimg.org/qqxoigjbr/Arun_Photo.png); background-position: right top; background-repeat: no-repeat; background-size: contain; }",[inputNode getAttributeNamed:@"class"]]; 

     NSString *cssString = strJSInjection; // 1 
     NSString *javascriptString = @"var style = document.createElement('style'); style.innerHTML = '%@'; document.head.appendChild(style)"; // 2 
     NSString *javascriptWithCSSString = [NSString stringWithFormat:javascriptString, cssString]; // 3 
     [webView stringByEvaluatingJavaScriptFromString:javascriptWithCSSString]; // 4 
+0

你知道的類名或要插入文本框圖像的ID? – arunjos007

+0

是的,我有訪問的文本字段,我試圖注入JavaScript,但仍沒有取得任何成功。 。 。 –

+0

請試試我的答案 – arunjos007

回答

1
<input type="text" class="textBox" /> 

讓我們假設上面的是你的HTML textfield然後應用CSS來此要插入圖片只需嘗試下面的代碼,

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    NSString *cssString = @".textBox{ background-image:url(https://s29.postimg.org/qqxoigjbr/Arun_Photo.png); background-position: right top; background-repeat: no-repeat; background-size: contain; }"; // 1 
    NSString *javascriptString = @"var style = document.createElement('style'); style.innerHTML = '%@'; document.head.appendChild(style)"; // 2 
    NSString *javascriptWithCSSString = [NSString stringWithFormat:javascriptString, cssString]; // 3 
    [webView stringByEvaluatingJavaScriptFromString:javascriptWithCSSString]; // 4 
} 

對於本地圖片文件你可以試試下面的代碼片段,

NSString *url = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]; 
NSString *cssString = [NSString stringWithFormat:@".textBox{ background-image:url(%@); background-position: right top; background-repeat: no-repeat; background-size: contain; }",url]; // 1 
+0

,如果你把正確的路徑到本地的圖像文件 – arunjos007

+0

與目標C嘗試它之前,它會的工作,你可以確認你的CSS和鏈接把你的代碼在這裏 工作的https://的jsfiddle。 net/r3ta1e2f/ – arunjos007

+0

謝謝,我已經完成了,只是啓發我如何儘可能地顯示本地圖像。 。 。 –