簡體   English   中英

注入的Javascript不覆蓋UiWebView中的URL

[英]Injected Javascript not overriding URL in UiWebView

在將本地.js文件注入到由UIWebView中另一台服務器托管的外部頁面的過程中。

當我是新手時,我覺得以下代碼應該呈現一個遠程HTML頁面並用本地js覆蓋它。 文件。 實際上,它只加載沒有js的頁面。

我的ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


    //load url into webview
    NSString *strURL = @"http://localhost:9080/test/";
    NSURL *url = [NSURL URLWithString:strURL];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [self.viewWeb loadRequest:urlRequest];

    NSString *js = [[NSBundle mainBundle] pathForResource:@"script" ofType:@"js" inDirectory:@"www" ];
    [self.viewWeb stringByEvaluatingJavaScriptFromString:js];

}

.js文件( script.js )正在將.css文件( style.css )注入到外部html頁面的標題中:

var link = document.createElement("link");
link.href = "style.css";
link.type = "text/css";
link.rel = "stylesheet";
document.getElementsByTagName("head")[0].appendChild(link);

外部頁面的HTML( index.html )為:

<html>
<head>
    <meta name="viewport" content="initial-scale=1">
</head>

<body>
<div class="big">TEXT</div>
</body>
</html>

這些文件位於www目錄中,其中文件夾作為“使用創建文件夾引用進行復制”導入到Xcode中。

如果將.js,.html,.css放在一個文件夾中,則在Xcode項目之外,所有方法均有效。 但是一旦我啟動了模擬器,那是不行的。 有人知道我在做什么錯嗎?

我不是Javascript專業人士,但按照書面規定:

NSString *js = [[NSBundle mainBundle] pathForResource:@"script" ofType:@"js" inDirectory:@"www" ];
[self.viewWeb stringByEvaluatingJavaScriptFromString:js];

我不認為這可能可行。

pathForResource:ofType:inDirectory:返回文件的路徑。 再說一次,我對Javascript幾乎一無所知,但是我高度懷疑文件路徑是否看起來像任何Javascript。

NSString *js = [[NSBundle mainBundle] pathForResource:@"script" ofType:@"js" inDirectory:@"www" ];
NSLog(@"%@",js);

嘗試該代碼段,然后查看打印內容。 它將打印以下兩件事之一。 如果找到該文件,它將打印該文件的文件路徑。 如果找不到填充,它將打印“(null)”(或類似的內容,因為如果找不到文件,則pathForResource:ofType:inDirectory:方法將返回nil )。

為了在路徑中獲取文件的內容,您需要使用NSString類方法stringWithContentsOfFile:encoding:error:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM