Предположим, я пишу следующий веб-компонент или пользовательский элемент:
<!doctype html>
<html>
<head>
<script src="js/MutationObserver.js"></script>
<script src="js/CustomElements.js"></script>
<script>
var proto = Object.create(HTMLElement.prototype);
proto.createdCallback = function() { console.log('created');};
proto.enteredViewCallback = function() {};
document.register('x-foo', {prototype: proto});
document.createElement('x-foo');
</script>
</head>
<body>
</body>
</html>
(polyfill на github) Это работает в Chrome. Но когда я пытаюсь запустить это в PhantomJS, я получаю следующую ошибку:
TypeError: instanceof called on an object with an invalid prototype property.
http://localhost/~me/js/CustomElements.js:18
http://localhost/~me/js/CustomElements.js:217 in instantiate
http://localhost/~me/js/CustomElements.js:333
http://localhost/~me/js/CustomElements.js:342 in createElement
...
Если вы хотите воспроизвести, вот мой скрипт phantomjs
var page = require('webpage').create();
page.open('http://localhost/~me/test.html', function() {
phantom.exit();
});
Я пробовал другие полифилы, такие как
но на самом деле ни один из них не работал. Любые идеи, как это исправить ?