【问题标题】:Refreshing pages with java script calling使用 javascript 调用刷新页面
【发布时间】:2012-09-29 20:59:09
【问题描述】:

我有一些 webView 和一个 viewController,它设置小的 webView 并通过调用具有不同值的 java 脚本来显示页面。

我正在使用下一个代码调用并显示结果:

 NSString * js = [NSString myScript:@"%@('%@');",@"showPageById", idNumber];
 [self.webView stringByEvaluatingJavaScriptFromString:js];
        [self.viewController.view addSubview:self.webView];

每次我发送idNUmber 我应该得到不同的页面,但问题是在我发送一次到 java 脚本idNumber 之后我正在显示新页面,但是在用新的idNUmber 再次调用它之后我'我总是得到相同的上一页!如果我重新开始,那么也只会显示第一个。

我试过reload 但它不起作用...

有什么想法吗??

【问题讨论】:

  • 您确定 isNumber 在两次通话之间发生了变化吗?还要检查您的脚本是否正确处理了不同的 idNumber。尝试将您的 javascript 放在一个文件中,然后在您的普通浏览器中运行它并运行它,看看您在两次调用之间得到了什么。还要检查你从哪里调用函数。
  • 根据日志,idNumber 正在发生 100% 的变化,当我在浏览器上运行它时,它也可以正常工作

标签: javascript iphone objective-c webview


【解决方案1】:

好的,我制作了一个简单的视图控制器,它像您尝试做的那样手动将 UIWebView 添加到自身。它也是一个私有的 UIWebView。我创建了一个简单的按钮,它将alert() 传递给 UIWebView,它每次都能正常工作,所以这里是整个代码,所以你可以看到发生了什么。

.h 文件

#import <UIKit/UIKit.h>

@interface SOFViewController : UIViewController
// This is linked as action thru nib.
- (IBAction)hitMe:(UIButton *)sender;

@end

.m 文件

这里请注意我第一次调用javascript到ViewDidAppear中的webView中的位置,其他前面的函数在第一次在模拟器中启动时会导致不良行为。我正在使用 Xcode 4.3

#import "SOFViewController.h"

@interface SOFViewController ()
{
    int idNumber;
    UIWebView *webViewMain;
}

@end

@implementation SOFViewController


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    webViewMain = [[UIWebView alloc] initWithFrame:CGRectMake(50.0, 50.0, 50.0, 50.0)];
    [self.view addSubview:webViewMain];
}
-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    idNumber = idNumber + 1;
    NSString * js = [NSString stringWithFormat:@"alert('%d');",idNumber];

    [webViewMain stringByEvaluatingJavaScriptFromString:js];
}
- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (IBAction)hitMe:(UIButton *)sender {
    idNumber = idNumber + 1;
    NSString * js = [NSString stringWithFormat:@"alert('%d');",idNumber];
    [webViewMain stringByEvaluatingJavaScriptFromString:js];
}
@end

希望这有一些帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2011-04-26
    • 2011-07-14
    • 2011-12-14
    相关资源
    最近更新 更多