我很确定这是一个愚蠢的问题,但我进行了搜索,但找不到类似/相同的场景。
因此,我有一个主要的 PHP 页面,其中我在 HTML 的 head
部分包含了几个 Javascript 文件。然后在某个时候,我通过 file_get_contents
从外部源获取内容(HTML + Javascript)并将其输出到主页。
这个新的输出会正常地从主页上获取 CSS 样式,但是任何依赖于在主页上加载的样式的 Javascript 代码将不起作用。即使我将所需的 Javascript 放在主页的 document.ready
中,它仍然无法工作。
只是为了举例说明代码:
<html>
<head>
<link href="style.css" rel="stylesheet">
<script src="somejslib.js"></script>
</head>
<body>
Some HTML here generated by PHP
<?php
$content = file_get_contents('http://whatever/page');
echo $content;
?>
</body>
在抓取的内容中我会有类似的东西:
<div>
<form>
<input type="text" id="bla">
</form>
</div>
<script>$('#bla').datepicker({ somecodehere });</script>
datepicker
已包含在主页面加载的库中,但无论我将此代码放在何处都无法正常工作。
有什么提示吗?
P.S:它起作用的唯一方法是,如果我再次包含新内容中的所有 Javascript 库,这当然不是解决方案。
最佳答案
确保在加载外部内容后附加监听器或使用 on() 事件处理程序 http://api.jquery.com/on/
附言我现在看到您的代码实际上缺少 document.ready,因此在执行之前没有等待文档加载。我不确定其中哪些适用于您的实际代码,因为您只发布了一个示例。例如,如果您通过 ajax 拉取内容,请应用第一个解决方案,否则只需将内容包装在准备好的文档中
关于Javascript 无法处理从其他来源提取的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940057/