我正在尝试为我的越狱iPhone制作一个iWidget。我在使用HTML文件时遇到问题

时间:2014-07-17 06:26:49

标签: javascript html ios plist

//下面是Widget.html文件。这是我需要帮助的文件。这部分不像我预期的那样工作。小部件本身可以工作,除了它不会显示网站。我试图将它显示在显示Reddit幻灯片的位置,用户可以在其中选择要查看哪个subreddit,以及如何查看它的选项(热门,热门,上升,争议)。完整的代码到目前为止有10个subreddits可供选择;我切断了八个来缩短帖子。当你使用它时,你可以成功选择一个subreddit和选项,但当你点击“添加”时,它只是一个盒子,所以我知道我的.plist文件有效。我只是不确定如何让这个.html文件正常运行。任何帮助将不胜感激。

<body>
<div id="wrapper">

    <script type="text/javascript">
    $(document).ready(function(){

        var inst_a = new Array(); //subreddit selection
        var inst_b = new Array(); //options

        //gaming
        //option1
        inst_a[1] + inst_b[11] = '<iframe src="http://www.redditp.com/r/gaming/top/?t=all" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
        //option2
        inst_a[1] + inst_b[12]  = '<iframe src="http://www.redditp.com/r/gaming" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
        //option3
        inst_a[1] + inst_b[13]  = '<iframe src="http://www.redditp.com/r/gaming/rising" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
        //option4
        inst_a[1] + inst_b[14]  = '<iframe src="http://www.redditp.com/r/gaming/controversial/?t=all" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
        //news
        //option1
        inst_a[2] + inst_b[11] = '<iframe src="http://www.redditp.com/r/news/top/?t=all" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
        //option2
        inst_a[2] + inst_b[12] = '<iframe src="http://www.redditp.com/r/news" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
        //option3
        inst_a[2] + inst_b[13] = '<iframe src="http://www.redditp.com/r/news/rising" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
        //option4
        inst_a[2] + inst_b[14] = '<iframe src="http://www.redditp.com/r/news/controversial/?t=all" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';


        $('#wrapper').html(inst_a[feed] + inst_b[feed]);

        });
    </script>
</div>
</body>

//下面是用于用户输入的Options.plist。第一组dict标签是选择subreddit。最后一组是选择subreddit选项(热门,上升等)。

<plist version="1.0">
  <array>
    <dict>
      <key>name</key>
      <string>feed</string>
      <key>type</key>
      <string>select</string>
      <key>label</key>
      <string>Feed</string>
      <key>default</key>
      <string>News</string>
      <key>options</key>
       <dict>
         <key>News</key>
         <string>1</string>
         <key>Gaming</key>
         <string>2</string>
       </dict>
    </dict>
    <dict>
      <key>name</key>
      <string>vMode</string>
      <key>type</key>
      <string>select</string>
      <key>label</key>
      <string>View Options</string>
      <key>default</key>
      <string>Hot</string>
      <key>options</key>
      <dict>
         <key>Top</key>
         <string>11</string>
         <key>Hot</key>
         <string>12</string>
         <key>Rising</key>
         <string>13</string>
         <key>Controversial</key>
         <string>14</string>
       </dict>
     </dict>    
  </array>
</plist>

1 个答案:

答案 0 :(得分:0)

我认为你接近这一切都是错误的,很可能是由于缺乏 写代码的经验。在我为您找到可能的解决方案之前,我已经做过了 强烈建议您学习更多关于Javascript和一般编程的知识 在继续你的下一个项目之前的知识。

我将引导你解决这个问题(至少在方法I&#39; d 推荐)而不只是告诉你什么将解决&#34;你的问题。所以一步 一个是检查您正在构建的<iframe>字符串。你看到了什么吗 所有这些都是一样的吗?

<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>
<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>
<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>
<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>
<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>
<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>
<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>
<iframe src="" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>

我已删除了网址,以便更清楚地了解这里的内容,正如您所看到的那样 他们都完全一样。这是清理这个的绝佳机会 重复的代码。并使其成为一种功能。

var buildIframeCode = function(url) {
  return '<iframe src="' + url + '" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:320px; height: 480px" ></iframe>';
};

这样可以更轻松,现在让我们查看网址:

http://www.redditp.com/r/gaming/top/?t=all
http://www.redditp.com/r/gaming
http://www.redditp.com/r/gaming/rising
http://www.redditp.com/r/gaming/controversial/?t=all
http://www.redditp.com/r/news/top/?t=all
http://www.redditp.com/r/news
http://www.redditp.com/r/news/rising
http://www.redditp.com/r/news/controversial/?t=all

嗯,它们都有相同的基础,所以这又是重用的绝佳机会 那。 URL在这里采用参数,subreddit和sort在这里 我们需要采取两个论点:

var buildRedditUrl = function(subreddit, sort) {
  return "http://www.redditp.com/r/" + subreddit + sort;
};

现在我们已经完成了这两个设置,只要选项发生变化,我就可以轻松完成:

buildIframeCode(buildRedditUrl(selectedSubreddit, selectedSort));

这些选项并不需要数字,我们现在可以使用字符串:

var reddits = {
  "Gaming": "gaming",
  "News": "news"
};

var sorts = {
  "Top": "/top/?t=all",
  "Hot": "",
  "Rising": "/rising",
  "Controversial": "/controversial/?t=all"
};

当然,如果这是您的方法,您可以从plist文件中加载它们 希望采取。现在你们都准备前进了。

与您的示例集成:

$("#wrapper").html(buildIframeCode(buildRedditUrl(reddits[selectedReddit], sort[selectedSort])));