【问题标题】:How to use JavaScripts inside xml for my ebook reader in ios uiwebview?如何在 xml 中为我的 ios uiwebview 中的电子书阅读器使用 JavaScript?
【发布时间】:2016-11-29 21:02:40
【问题描述】:

我可以用这段代码在 HTML 中加载 JavaScripts 标签:

function loadjscssfile(filename, filetype){

if (filetype=="js"){ //if filename is a external JavaScript file
var fileref = document.createElement('script');
fileref.src = filename;
fileref.async = false;
}
else if (filetype=="css"){ //if filename is an external CSS file
    var fileref=document.createElement("link")
    fileref.setAttribute("rel", "stylesheet")
    fileref.setAttribute("type", "text/css")
    fileref.setAttribute("href", filename)
}
if (typeof fileref!="undefined"){
    document.head.appendChild(fileref);
      }
}
loadjscssfile("jquery.min.js", "js") //dynamically load and add this .js file
loadjscssfile("annotator.min.css", "css") ////dynamically load and add this .css file

但我想在 epub 阅读器中使用它,它分解为 xml/html。我希望在 ios uiwebview 中打开我的电子书阅读器时执行相同的 js。

示例 xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
   <head>
      <title>CHAPTER 13 - DR. SEWARD'S DIARY&#8212;cont. | Dracula</title>
      <link rel="stylesheet" href="css/book.css" type="text/css"/>
      <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
      <meta name="EPB-UUID" content="01D8803E-6BF7-1014-BF2E-F46A8E11922F"/>
   </head>
   <body>
      <div class="body">
         <div class="chapter">
            <h3 class="chapter-title">CHAPTER 1</h3>
            <h4 class="chapter-subtitle">DR. DIARY&#8212;cont.</h4>
            <p>"She makes a very beautiful corpse, sir. It's quite a privilege to attend on her. It's not too much to say that she will do credit to our establishment!"</p>
        </div>
      </div>
   </body>
</html>

【问题讨论】:

    标签: javascript html css xml uiwebview


    【解决方案1】:

    您可以在 xml 中使用 JavaScript,如下所示:

    <?xml version="1.0" encoding="utf-8" ?>
    <content>
      <data>
        <![CDATA[
          <script type="javascript">
              alert("hello");
              <script src="~/Scripts/jquery-1.8.2.js"></script>
          </script>
      ]]>
      </data>
    </content>
    

    【讨论】:

    • 我希望外部 JS 文件包含在 xml 文件中。
    • 是的,您可以在 部分中提供 JS 文件的路径。
    • 已修改。不确定您如何尝试解析 xml 文件,但我认为您需要获取 元素的内容并将其加载到 webview。希望这会有所帮助。
    • 它没有醒!供您参考,我已为您附上了我的示例 xml!你能测试一下它是否对你有用吗?
    • 你能在 部分中添加 标签并尝试一下。
    【解决方案2】:

    你只需要简单地为 JS 和 CSS 添加这两个函数:

        - (void) addJSScripts
    {
        NSString *jsFilePath = [[NSBundle mainBundle] pathForResource:@"jquery.min" ofType:@"js"];
        NSURL *jsURL = [NSURL fileURLWithPath:jsFilePath];
        NSString *javascriptCode1 = [NSString stringWithContentsOfFile:jsFilePath encoding:NSUTF8StringEncoding error:nil];
    
    jsFilePath = [[NSBundle mainBundle] pathForResource:@"annotator.offline.min" ofType:@"js"];
    jsURL = [NSURL fileURLWithPath:jsFilePath];
    NSString *javascriptCode2 = [NSString stringWithContentsOfFile:jsFilePath encoding:NSUTF8StringEncoding error:nil];
    
    jsFilePath = [[NSBundle mainBundle] pathForResource:@"offlinejs" ofType:@"js"];
    jsURL = [NSURL fileURLWithPath:jsFilePath];
    NSString *javascriptCode3 = [NSString stringWithContentsOfFile:jsFilePath encoding:NSUTF8StringEncoding error:nil];
    
    jsFilePath = [[NSBundle mainBundle] pathForResource:@"startjs" ofType:@"js"];
    jsURL = [NSURL fileURLWithPath:jsFilePath];
    NSString *javascriptCode4 = [NSString stringWithContentsOfFile:jsFilePath encoding:NSUTF8StringEncoding error:nil];
    
    [_webview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"%@\n%@\n%@\n%@",javascriptCode1, javascriptCode2, javascriptCode3, javascriptCode4]];
    

    }

    - (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"annotator.min" ofType:@"css"];
    NSString *javascriptString = @"var link = document.createElement('link'); link.href = '%@'; link.rel = 'stylesheet'; document.head.appendChild(link)";
    NSString *javascriptWithPathString = [NSString stringWithFormat:javascriptString, path];
    [_webview stringByEvaluatingJavaScriptFromString:javascriptWithPathString];
    
    path = [[NSBundle mainBundle] pathForResource:@"annotator.touch" ofType:@"css"];
    javascriptString = @"var link = document.createElement('link'); link.href = '%@'; link.rel = 'stylesheet'; document.head.appendChild(link)";
    javascriptWithPathString = [NSString stringWithFormat:javascriptString, path];
        [_webview stringByEvaluatingJavaScriptFromString:javascriptWithPathString];
    [self addJSScripts];
    

    }

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2012-01-15
      • 2015-09-24
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多