【问题标题】:JavaScript including another oneJavaScript 包括另一个
【发布时间】:2013-08-22 17:26:40
【问题描述】:

我正在尝试为 javascript 包含另一个 javascript 的收音机制作 插件。我尝试了多种解决方案,但没有一个对我有用。 我不懂 Javascript,所以基本上我想从经验中学习。

这是我的代码:

function loading_live() {
    document.write('<'+'script src="http://djspinnercee.servemp3.com:32768/php-cgi/scaststatus_x.php?index=5&host='+<?php echo (RADIO_ADDRESS); ?>+'&port='<?php echo (RADIO_PORT); ?>'" type="text/javascript"><' + '/script>');

}

var auto_refresh = setInterval(function(){
    $('#LiveNow').fadeOut('slow').loading_live().fadeIn("slow");
}, 10000);

Javascript 会重新加载正确的 div.. 但在加载其他外部 Javascript 时,它会崩溃并且不显示任何内容。

【问题讨论】:

  • 仅仅声明一个函数并不能使它成为一个jQuery插件,你需要将它添加到jQuery原型中。查看tutorial

标签: javascript jquery refresh reload


【解决方案1】:

这里有几个问题。

首先是你没有调用你的函数。在fade 之后链接它不起作用。

您需要显式调用它。 但无论如何它都行不通。

这是第二个问题。

页面加载时您不能 document.write

它仅在浏览器评估 Javascript 时有效。 这就是为什么类似的方法会立即调用该函数,例如:

function () {
  document.write('this is inserted in the page');
}(); // <- note the parenthesis

如果你想在页面加载完成后向 DOM 添加 JS 节点,则需要创建元素,然后将其附加到 DOM。

【讨论】:

  • 嗯..我认为我正在调用的外部脚本也在使用 document.write ...所以,我如何创建元素,从外部收集信息,然后将其附加到DOM ?
  • 如果外部文档也使用document.write,你不能做淡化的技巧... :( 只需添加它没有效果。或者你可以使用iframe 加载它iframe 但真的很尴尬..
  • 确实,iframe 很尴尬.. 但现在,它似乎是唯一的答案。好吧,我尝试删除淡入淡出效果,但没有奏效。也许我在正确的方向上更改了代码,但我无法完成它。请您发布整个代码吗?
  • 尝试只输入页面document.write('&lt;'+'script src="http://djspinnercee.servemp3.com:32768/php-cgi/scaststatus_x.php?index=5&amp;host='+&lt;?php echo (RADIO_ADDRESS); ?&gt;+'&amp;port='&lt;?php echo (RADIO_PORT); ?&gt;'" type="text/javascript"&gt;&lt;' + '/script&gt;'); 它应该创建&lt;script src=... 的东西。切记不要把它放在head 或者body 外面,否则它不起作用。
  • @Web_Rookie 并查看您的页面还有很多其他问题:您导入了 3 个不同版本的 jquery,您的字符串格式不正确,因为您错过了连接主机的 ',您使用PHP所以你不需要在JS中连接HOST和PORT,只需将它们写在url中,脚本在marquee(啊!)...
【解决方案2】:

getScript 对你有用吗?

var auto_refresh = setInterval(function(){
    $('#LiveNow').fadeOut('slow');
    $.getScript('http://djspinnercee.servemp3.com:32768/php-cgi/scaststatus_x.php?index=5&host=<?php echo (RADIO_ADDRESS); ?>&port=<?php echo (RADIO_PORT); ?>', function () {
        $('#LiveNow').fadeIn("slow");
    });
}, 10000);

【讨论】:

  • 嗯..我现在试过了..但没用...link
  • 我在解决方案中发现了一个错字并从那时起对其进行了编辑。 edit:你的页面上甚至没有 jQuery。你好吗$('#LiveNow')
  • 哦.. 对.. 抱歉,我以为只有那个链接就可以了。这是正确的link 这是整个页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
相关资源
最近更新 更多